pandas 如何在Python中添加两个具有相同单位的数字

eni9jsuy  于 2023-08-01  发布在  Python
关注(0)|答案(1)|浏览(97)

我有一个pandas dataframe,其中一列的值以千吨为单位,缩写为'kt'。现在,当我对Country列和year列执行groupby并对Value列调用聚合函数sum时,它实际上并没有对value列中的值进行求和。
The dataset
执行上述操作后,以下内容即将到来:
After groupby n aggregation
但是,预期输出应为:
enter image description here
“Value”列也是对象类型。
任何帮助都是有用的。

ryevplcw

ryevplcw1#

如果你使用的是数字和字母混合的值,那么它们将是Pandas dtypeobject的字符串。你需要拆分数字部分,转换成整数,放入一个新的列,然后使用groupby和sum或其他东西。举例来说:

import pandas as pd

df = pd.DataFrame({'Country': ['Algeria', 'Algeria','Algeria','Angola', 'Angola'],
                   'Item': ['Wheat and products', 'Wheat and products','Wheat and products','Wheat and products','Wheat and products'],
                   'Year': [2004, 2004,2005,2004,2004],
                   'Value':['2731 kt', '2415 kt','2688 kt','2000 kt','1111 kt']
                   })

df['ValNum'] = df['Value'].str.extract(r"(\d+)").astype('int')

df2 = df.groupby(['Country', 'Year'])['ValNum'].sum()

print(df2)

字符串
给出:

Country  Year
Algeria  2004    5146
         2005    2688
Angola   2004    3111

相关问题