Skip to main content
 首页 » 编程设计

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

2025年05月04日16www_RR

如何创建仅对列具有相同值的行子集完成操作的 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]