如何创建仅对列具有相同值的行子集完成操作的 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
,我认为——那是“只对其中一列具有相同值的行进行操作”部分——因为看起来你想要每个行以获得适当的总和,我想你想调用 .transform
。 transform
将分组值“广播”到完整数据帧。
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/