使用组的总和,而不给出预期结果

时间:2019-04-17 03:10:32

标签: python pandas dataframe sum

我需要使用另一列上的分组依据来求和一列的值,并用这些值覆盖数据框

我已经尝试过-

df.groupby('S/T name')['Age group (Years)Total Persons'].sum()

要在-上实现求和的数据框

S/T code        S/T name          city name         population
1                NSW            Greater sydney       1000
1                NSW            rest of nsw          100
1                NSW            rest of nsw          2000
2                Victoria       Geelong              1200
2                Victoria       Melbourne            1300
2                Victoria       Melbourne            1000

必需的输出-

S/T code        S/T name        population
1                NSW                3100
2                Victoria           3500

2 个答案:

答案 0 :(得分:0)

尝试以下代码:

解决方案1 ​​

grouped_df = df.groupby('S/T name')['population'].sum()
print(grouped_df)

上面的代码将按列S/T name将结果分组,并给出sum列的population

解决方案2

grouped_df1 = df.groupby('S/T name').agg({'S/Tcode':'unique','population': 'sum'})
grouped_df1

答案 1 :(得分:0)

您似乎在示例中的错误列上进行了总结,切换为人口将为您提供大部分帮助:

df.groupby('S/T name')['population'].sum()

由于您想保留S / T代码列,尽管可以使用agg。在“人口”列中调用sum,在“ S / T代码”列中调用均值:

df.groupby('S/T name').agg({'population': 'sum', 'S/T code': 'mean'})

输出:

S/T name        S/T code  population              
NSW              1        3100
Victoria         2        3500
相关问题