我有一个Pandas DataFrame,其中包含来自冰淇淋冰箱的数据。几列描述了系统中的不同温度以及其他一些内容。 一栏名为“除霜状态”,告诉我冷冻机何时解冻以去除具有布尔值的大量冰。
那些“除霜”是我感兴趣的,因此我添加了另一列名为“ around_defrost”。该列目前仅具有NaN值,但是只要距数据框中的该行30分钟之内除霜,我想将它们更改为“ True”。 数据每分钟记录一次,因此30分钟意味着需要将除霜前30行和其后30行设置为“真”
我已经尝试使用itterrows,ittertuples并通过处理下图所示的索引来做到这一点,但到目前为止还没有成功。如果有人对如何做到这一点有一个好主意,我将不胜感激!
答案 0 :(得分:0)
您需要使用dataframe.rolling
:
df = df.sort_values("Time") #sort by Time
df['around_defrost'] = df['Defrost status'].rolling(60, center=True, min_periods = 0).apply(
lambda x: True if True in x else False, raw=True)
编辑:您可能需要rolling(61, center=True)
,因为您想考虑相关行AND之前和之后的30。