我有一个数据框:
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
我希望有一个卷列,该列是No,但是groupby Type列的总和,然后只找到唯一的行并总结,下面是我的预期结果:
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()))
答案 0 :(得分:3)
IIUIC,你需要做
DoCmd.SetWarnings False
答案 1 :(得分:0)
这不是一个行代码,但它可能有效
# 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')