如何按列分组并找到唯一行,然后在中应用sum()

2024-09-29 23:23:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧:

 Title     Product    No     Type
   A         Mo       3       Sky
   A         Mo       3       Sky
   A         Mo       3       Sky
   A         Md       2       Sky
   A         Md       3       Sky
   A         Md       2       Sky
   A         Md       6       Land
   A         Md       6       Land
   A         Md       6       Land
   A         Mo       5       Land
   A         Mo       5       Land

我希望有一个volume列,该列是No but groupby类型列的和,然后只找到唯一的行并对其求和,下面是我的预期结果:

 Title     Product    No     Type      Sum
   A         Mo       3       Sky       8
   A         Mo       3       Sky       8
   A         Mo       3       Sky       8
   A         Md       2       Sky       8
   A         Md       2       Sky       8
   A         Md       2       Sky       8
   A         Md       6       Land      11
   A         Md       6       Land      11
   A         Md       6       Land      11
   A         Mo       5       Land      11
   A         Mo       5       Land      11

我尝试运行下面的代码,但出现错误无法访问“DataFrameGroupBy”对象的可调用属性“groupby”,请尝试使用“apply”方法

代码:

      FamilyVsM['Sum']=(FamilyVsM.groupby(['Type']).groupby(['Title','Product'])['No'].transform(lambda x: np.unique(x).sum()))  

Tags: 数据no代码titletypeproductmdbut
2条回答

IIUIC,你需要

In [715]: df['Sum'] = df.groupby('Type')['No'].transform(lambda x: x.unique().sum())

In [716]: df
Out[716]:
   Title Product  No  Type  Sum
0      A      Mo   3   Sky    5
1      A      Mo   3   Sky    5
2      A      Mo   3   Sky    5
3      A      Md   2   Sky    5
4      A      Md   2   Sky    5
5      A      Md   2   Sky    5
6      A      Md   6  Land   11
7      A      Md   6  Land   11
8      A      Md   6  Land   11
9      A      Mo   5  Land   11
10     A      Mo   5  Land   11

这不是单行代码,但可能有用

# First, group by 'Type' and sum 'No'
df_group = df.groupby(['Type'], as_index=False)['No'].sum().rename(columns={'No': 'Sum'})

# Second, merge by 'Type'
df.merge(df_group, how='left', left_on='Type', right_on='Type')

相关问题 更多 >

    热门问题