首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pandas:如何按组对变量求和?

Pandas:如何按组对变量求和?
EN

Stack Overflow用户
提问于 2019-03-22 03:59:25
回答 1查看 2.3K关注 0票数 1

我想在python中将多个值求和为1。请看下面我的数据图片。我想要将每个国家每年的AGE的所有值相加。

而不是这样:

代码语言:javascript
复制
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

我想要这个:

代码语言:javascript
复制
country  TIME             Value
A       2017               300       
A       2016               400
B       2017               600       
B       2016               800

数据类型:

代码语言:javascript
复制
df4types
AGE      object
Value    object
dtype: object

该数据具有按国家/地区和TIME划分的多个索引。

如果你尝试过这样做:

代码语言:javascript
复制
df=df.groupby(by=["TIME","GEO"])['Value'].sum()

还有这个:

代码语言:javascript
复制
df=df.groupby(by=["TIME","GEO"]).sum()['Value']

两者都是“有效”的,但都产生了巨大的价值。就像它不是求和,而是将数字相互粘贴在一起。我尝试通过使用: by df.Value.astype(float) & df.Value.astype(int)将变量类型更改为numeric

不幸的是,这并没有解决问题。有没有人知道如何按组和时间对这些值进行求和?我还上传了一张真实数据集的照片。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-22 04:16:20

  • 年龄列似乎不会在您想要的数据中发挥作用。
  • “dtype=object”不应该是值。如果您尝试使用df.Value = df.Value.astype(int)df.Value=pd.to_numeric(df.Value),但它不起作用,那么我敢打赌,您将需要清理该列中的一些数据)
  • 您不应该需要弄乱多索引

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

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame(<your data here>)
result = df.groupby(by=['country','TIME']).sum() 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55288399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档