我有一组包含 3 列的数据 - 线、止损点和值。我想按公共线路和停靠点出现的顺序对它们的值进行求和。
这是我拥有的数据集:
这就是我想从这个原始数据集创建的内容:
我尝试通过创建数据透视表并使用 aggfunc 对值求和来做到这一点。
rail_pivot = pd.pivot_table(rail_d, index=['Line', 'Stop'], aggfunc= {'Value': 'sum'})
但它汇总了常见止损点的所有值,而不是按常见止损点出现的顺序。见下文
代码
cond = df.groupby('Line')['Stop'].shift().ne(df['Stop'])
grp = cond.groupby(df['Line']).cumsum()
out = (df
.groupby(['Line', grp]).agg({'Stop': 'first', 'Value': 'sum'})
.droplevel(1)
.reset_index()
)
出
Line Stop Value
0 A1 A 12
1 A1 B 4
2 A1 A 1
3 B1 A 11
4 B1 B 2
5 B1 A 3