, если столбец таблицы моделей не является эквивалентным столбцом 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
Используйте 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