根据另一行的值更改熊猫数据框中的一行

时间:2020-02-27 14:56:10

标签: python pandas dataframe

我有一个Pandas DataFrame,其中包含来自冰淇淋冰箱的数据。几列描述了系统中的不同温度以及其他一些内容。 一栏名为“除霜状态”,告诉我冷冻机何时解冻以去除具有布尔值的大量冰。

那些“除霜”是我感兴趣的,因此我添加了另一列名为“ around_defrost”。该列目前仅具有NaN值,但是只要距数据框中的该行30分钟之内除霜,我想将它们更改为“ True”。 数据每分钟记录一次,因此30分钟意味着需要将除霜前30行和其后30行设置为“真”

我已经尝试使用itterrows,ittertuples并通过处理下图所示的索引来做到这一点,但到目前为止还没有成功。如果有人对如何做到这一点有一个好主意,我将不胜感激!

enter image description here

1 个答案:

答案 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。