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

标签 python pandas pandas-groupby

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

相关文章:

python - flask 套接字和 ZeroMQ

python - 如何在 PyQt5 中获取当前聚焦的小部件对象名称?

python - 如何编写可在任何 Red Hat 计算机上运行的 python 脚本?

python - Pandas usecols 除了最后一个

python - 解析 Pandas 中的日期范围字符串

python - 如何使用 Pandas 将字典列表分组为子列表?

python - 使用这种日期格式对列表进行反向排序的最佳方法是什么?

python - 属性错误: 'DataFrame' object has no attribute 'dtype' error in pyspark

python-3.x - Pandas Group By 和 Get Dummies

python - Pandas :根据条件删除多行