我正在尝试将'flag'== 2的'value'累加,并将这些累积值添加到'flag'== 1的连续行中,并删除flag 2行。
输入
Index_Date flag value
========================
2020-01-31 1 10
2020-02-01 2 5
2020-02-02 1 10
2020-02-03 2 5
2020-03-04 1 20
所需的输出
Index_Date flag value
========================
2020-01-31 1 10
2020-02-02 1 15
2020-03-04 1 30
通过迭代获得上述结果。
import pandas as pd
df = df.sort_values(by=['Index_Date'])
adjustments = 0
for index, row in df.iterrows():
if row['flag'] == 2:
adjustments += row['value']
else:
row['value'] += adjustments
df.drop(df[df['flag'] == 2].index, inplace = True)
是否有一种无需迭代即可实现的方法?谢谢。
尝试:
df['value'] += np.where(df['flag'] == 2, df['value'], 0).cumsum()
df = df[df['flag']==1]
输出:
Index_Date flag value
0 2020-01-31 1 10
2 2020-02-02 1 15
4 2020-03-04 1 30