熊猫groupby sum给出错误的输出

时间:2020-04-23 17:28:11

标签: python pandas pandas-groupby

我的数据框:

State = ['CA', 'CA', 'CA', 'CA', 'SR', 'SR', 'SR', 'SR']
County = ['UC', 'UC', 'DB', 'DB', 'DD', 'DD', 'DD', 'DD']
Count  = [100, 100, 150, 150, 200, 200, 200, 200]
df = pd.DataFrame({'State': State, 'County': County, 'Count' : Count})

预期输出:

 State  Count
0    CA    250
1    SR    200

这就是我在做什么:

df_new = df.groupby(['State']).sum().reset_index()

这就是我得到的:

 State  Count
0    CA    500
1    SR    800

如果县在州中重复出现。它应该忽略重复的条目。但是,为什么不这样做呢?

2 个答案:

答案 0 :(得分:1)

尝试先使用drop_duplicates过滤数据帧,然后再分组和求和:

df.drop_duplicates(['State', 'County']).groupby('State').sum().reset_index()

输出:

  State  Count
0    CA    250
1    SR    200

答案 1 :(得分:0)

另一种实现方法是使用lambda函数

df.groupby(['State']).apply(lambda x: x.groupby(['County']).Count.first().sum()).reset_index()

输出:

State   0
0   CA  250
1   SR  200

希望这会有所帮助:)