Skip to main content
 首页 » 编程设计

python之Groupby Pandas 生成多个带条件的字段

2025年05月04日10me-sa

我有一个 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