我有一个数据帧df
,列type
,timestamp
,value
和team
。类型为add
(加值)或sub
(减值)。这些记录记录了为某个特定团队支付或收取的款项。我想计算一下我在所有团队和每个团队上花费的总金额。请注意,我可以在周一支付X
给特定的A
团队,然后在周二取回X
,然后在周五支付A
团队的Y
。有什么熊猫式的好方法吗?下面是数据的示例:
<表类>
类型
时间戳
价值
团队
tbody><<tr>添加 1675971432 20 添加 1675971392 50 C 子 1675877813 15 添加 1675877579 10 D 添加 1675877528 20道明> 添加 1675877128 15 表类>
我从您那里了解到您需要两个新列:
第一列是反映总体净余额((add) - (sub)的总和)第二列反映的是每个团队的净余额
为了达到目的,你需要一个虚拟列,你可以随后删除。
创建第一个虚拟列:import numpy as np
df['dummy'] = np.where(df.Type=='add',df.Value, df.Value *-1)
现在您将创建第一列"overall">
df['overall'] = sum(df.dummy)
第二列
df['netbalance']= df.groupby('Team')['dummy'].transform('sum')
最后您将删除虚拟列
df.drop(columns='dummy',inplace=True)