gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:46 24 4
gpt4 key购买 nike

我想在 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']

两者都“有效”,但产生了巨大的值(value)。就像它不求和而是将数字粘贴到彼此后面。我尝试使用以下方法将变量类型更改为数字:通过df.Value.astype(float) & df.Value.astype(int)

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

enter image description here

最佳答案

  • 年龄列似乎在您想要的数据中没有发挥作用。
  • “值”不应该是 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()

关于python - Pandas:如何按组对变量求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55288399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com