我有一个 pandas 数据框:
df = pandas.DataFrame( {
"Label" : ["A", "A", "B", "B", "C" , "C"] ,
"Value" : [1, 9, 1, 1, 9, 9],
"Weight" : [2, 4, 6, 8, 10, 12} )
我想按“标签”对数据进行分组并生成 2 个字段。
- 如果 Value==1,第一个字段 'newweight' 将求和 Weight
- 第二个字段,'weightvalue' 将求和 Weight*Value
所以我会留下以下数据框:
Label newweight weightvalue
A 2 38
B 14 14
C 0 198
我查看了 pandas groupby() 函数,但在使用它生成 2 个字段时遇到了问题。
最佳答案
使用groupby.apply
,你可以:
df.groupby('Label').apply(
lambda g: pd.Series({
"newweight": g.Weight[g.Value == 1].sum(),
"weightvalue": g.Weight.mul(g.Value).sum()
})).fillna(0)
# newweight weightvalue
#Label
#A 2.0 38.0
#B 14.0 14.0
#C 0.0 198.0
关于python - Groupby Pandas 生成多个带条件的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48198319/