python - 使用groupby仅对其中一列pandas python具有相同值的行进行操作

标签 python pandas

如何创建仅对列具有相同值的行子集完成操作的 groupby 函数?

所以在下表中,我想根据相同的文档列表对行进行子集化,然后仅为“组织”列的文档列表子集添加 NP 和 Pr。

        Organization NP Pr
    0    doclist[0]  0   0
    1    doclist[0]  1   0
    4    doclist[1]  1   0
    5    doclist[4]  1   0
    6    doclist[4]  0   1

想在下面使用 .apply() - 或者有更好/更有效的方法吗?

        Organization NP Pr  Sum
    0    doclist[0]  0   0   1
    1    doclist[0]  1   0   1
    4    doclist[1]  1   0   1
    5    doclist[4]  1   0   2
    6    doclist[4]  0   1   2

最佳答案

你想看看 groupby,我认为——那是“只对其中一列具有相同值的行进行操作”部分——因为看起来你想要每个行以获得适当的总和,我想你想调用 .transformtransform 将分组值“广播”到完整数据帧。

df["Sum"] = (df["NP"] + df["Pr"]).groupby(df["Organization"]).transform("sum")

例如:

>>> df
  Organization  NP  Pr
0   doclist[0]   0   0
1   doclist[0]   1   0
4   doclist[1]   1   0
5   doclist[4]   1   0
6   doclist[4]   0   1

[5 rows x 3 columns]
>>> df["Sum"] = (df["NP"] + df["Pr"]).groupby(df["Organization"]).transform("sum")
>>> df
  Organization  NP  Pr  Sum
0   doclist[0]   0   0    1
1   doclist[0]   1   0    1
4   doclist[1]   1   0    1
5   doclist[4]   1   0    2
6   doclist[4]   0   1    2

[5 rows x 4 columns]

关于python - 使用groupby仅对其中一列pandas python具有相同值的行进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22362010/

相关文章:

python - django @login_required 装饰器错误

python - 绘制椭球体

python - 增加对和的速度 - Codewars

python - 在 Python 中获取类的变量和方法的列表

python - 比较 2 个 Pandas 数据框并返回所有不同的行

python - 如何从 pandas DataSeries 中提取独特的排列?

python - 使用 pandas dataframe 根据不同级别的键范围从多索引行中进行切片的便捷方法

python - Matplotlib 图例垂直旋转

python - 用 python 查看 A 和上一个 B

python - 将一列中的数据分成三列