(i + 1) больше, чем (i) для всех i в окне 4 (предыдущие чтения)

, если столбец таблицы моделей не является эквивалентным столбцом mysql.

, например:

class People:
    id: int = Column(name='id', type_=Integer, primary_key=True)
    createdTime: datetime = Column(name='create_time', type_=TIMESTAMP,
                               nullable=False,
                               server_default=text("CURRENT_TIMESTAMP"),
                               default=func.now())
    modifiedTime: datetime = Column(name='modify_time', type_=TIMESTAMP,
                                server_default=text("CURRENT_TIMESTAMP"),
                                default=func.now())

Необходимо использовать:

 from sqlalchemy.orm import class_mapper 
 def asDict(self):
        return {x.key: getattr(self, x.key, None) for x in
            class_mapper(Application).iterate_properties}

, если вы используйте этот способ, вы можете получить change_time, а create_time - None

{'id': 1, 'create_time': None, 'modify_time': None}


    def to_dict(self):
        return {c.name: getattr(self, c.name, None)
         for c in self.__table__.columns}

Поскольку имя атрибута класса не совпадает с хранилищем столбцов в mysql

0
задан jezrael 13 July 2018 в 05:28
поделиться

1 ответ

Используйте strides , затем получите разницу с numpy.diff , сравните и последний проверите все True s на строку numpy.all :

N = 4
x = np.concatenate([[np.nan] * (N-1), df['rainfall'].values])

def rolling_window(a, window):
    shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)
    strides = a.strides + (a.strides[-1],)
    return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)
arr = rolling_window(x, N)
print (arr)
[[ nan  nan  nan  3.1]
 [ nan  nan  3.1  2. ]
 [ nan  3.1  2.   0. ]
 [ 3.1  2.   0.   0. ]
 [ 2.   0.   0.  12. ]
 [ 0.   0.  12.   0. ]
 [ 0.  12.   0.   1. ]
 [12.   0.   1.   2. ]
 [ 0.   1.   2.   3. ]
 [ 1.   2.   3.   6. ]
 [ 2.   3.   6.   1. ]
 [ 3.   6.   1.   2. ]
 [ 6.   1.   2.   9. ]]

df['flag'] = (np.diff(arr, axis=1) > 0).all(axis=1)
print (df)
    rainfall   flag
0        3.1  False
1        2.0  False
2        0.0  False
3        0.0  False
4       12.0  False
5        0.0  False
6        1.0  False
7        2.0  False
8        3.0   True
9        6.0   True
10       1.0  False
11       2.0  False
12       9.0  False
0
ответ дан jezrael 17 August 2018 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: