【发布时间】:2021-12-26 06:17:18
【问题描述】:
我有以下数据框:
ID Start End Variance
1 100000 120000 20000
1 1 0 -1
1 7815.58 7815.58 0
1 5261 5261 0
1 138783.2 89969.37 -48813.83
1 2459.92 2459.92 0
2 101421.99 93387.45 -8034.54
2 940.04 940.04 0
2 63.06 63.06 0
2 2454.86 2454.86 0
2 830 830 0
2 299 299 0
2 14000 12000 2000
2 1500 500 1000
我想创建一个新列Overspend Total。但我只想对大于 0 的值求和。生成的 DataFrame 将如下所示:
ID Start End Variance Overspend Total
1 100000 120000 20000 20000
1 1 0 -1 20000
1 7815.58 7815.58 0 20000
1 5261 5261 0 20000
1 138783.2 89969.37 -48813.83 20000
1 2459.92 2459.92 0 20000
2 101421.99 93387.45 -8034.54 3000
2 940.04 940.04 0 3000
2 63.06 63.06 0 3000
2 2454.86 2454.86 0 3000
2 830 830 0 3000
2 299 299 0 3000
2 14000 12000 2000 3000
2 1500 500 1000 3000
我尝试了以下
df['Overspend Variance'] = df[df['Variance'] > 0].groupby(df['ID']).transform('sum')
但我收到以下错误:
ValueError: Wrong number of items passed 8, placement implies 1
我知道df['Overspend Variance'] = df['Variance'].groupby(df['ID']).transform('sum') 可以在没有条件的情况下工作,但我不知道如何将它与额外条件结合起来。
【问题讨论】:
标签: python pandas filter pandas-groupby