熊猫:如何按组对变量求和?

时间:2019-03-21 19:59:25

标签: python pandas pandas-groupby

我想在python中将多个值求和。 请参阅下面的数据图片。我想对每个国家/地区每年AGE的所有值求和。

而不是这样:

country  TIME       AGE      Value
A        2017       20-60     200
A        2017       60-80     100
A        2016       20-60     200
A        2016       60-80     200
B        2017       20-60     300
B        2017       60-80     300
B        2016       20-60     400
B        2016       60-80     400

我想要这个:

country  TIME             Value
A       2017               300       
A       2016               400
B       2017               600       
B       2016               800

数据类型:

df4types
AGE      object
Value    object
dtype: object

数据按国家和TIME具有多个索引。

如果已经尝试过:

df=df.groupby(by=["TIME","GEO"])['Value'].sum()

这:

df=df.groupby(by=["TIME","GEO"]).sum()['Value']

两者都“奏效”,但产生了巨大的价值。就像它不求和,而是将数字彼此粘贴在一起。我试图通过使用以下方式将变量类型更改为数字: 由df.Value.astype(float) & df.Value.astype(int)

不幸的是,这不能解决问题。有人知道如何正确按组和时间对值求和吗?我还上传了真实数据集的图片。

enter image description here

1 个答案:

答案 0 :(得分:0)

  • “年龄”列似乎在所需数据中没有作用。
  • “值”不应为dtype = object。如果您尝试使用df.Value = df.Value.astype(int)df.Value=pd.to_numeric(df.Value)却无法正常工作,那么我敢打赌,您需要在该列中清理一些数据)
  • 您不需要弄乱多重索引

完成上述操作后,请尝试以下代码。

import pandas as pd
df = pd.DataFrame(<your data here>)
result = df.groupby(by=['country','TIME']).sum()