假设我想创建一个新列来计算自状态为 1 以来的天数。例如,当前列将是下面的前三列。第四列是我想要得到的。
Index State Days Since_Days
1 1 0 0
2 0 20 20
3 0 40 40
4 1 55 55
5 1 60 5
6 1 70 10
在不使用 for 循环的情况下,pandas 的处理方法是什么?
请您参考如下方法:
您也可以尝试按照您首先按 State 分组的位置进行操作,对于那些具有 State == 1 的分组,按差异进行填充。然后,对于那些具有 State == 0 的将是 na 可以用相应的 Days 列值填充
df.loc[df.State == 1, 'Since_Days'] = df.groupby('State')['Days'].diff().fillna(0)
df['Since_Days'].fillna(df['Days'],inplace=True)
print(df)
结果:
Index State Days Since_Days
0 1 1 0 0.0
1 2 0 20 20.0
2 3 0 40 40.0
3 4 1 55 55.0
4 5 1 60 5.0
5 6 1 70 10.0
