如何在python中将两个具有相同单位的数字相加

How to add two numbers having same units in python

提问人:Surbhi Jain 提问时间:7/16/2023 最后编辑:wjandreaSurbhi Jain 更新时间:7/16/2023 访问量:65

问:

我有一个 pandas 数据帧,其中一列的值以千吨为单位,缩写为“kt”。现在,当我在国家/地区列和年份列上执行 groupby 并在值列上调用聚合函数 sum 时,它实际上并没有在值列中执行值总和。

数据集

执行上述操作后,将出现以下内容:

groupby n 聚合后

但是,预期输出应为:

在此处输入图像描述

此外,“Value”列的类型为 object。

任何帮助都是有用的。

Python pandas 度量单位

评论

1赞 wjandrea 7/16/2023
欢迎来到 Stack Overflow!请参加参观不要发布文字图片。相反,复制文本本身,将其编辑到您的帖子中,并使用代码格式化等格式化工具。顺便说一句,如果您想了解更多提示,请查看 如何提出一个好问题.
1赞 Tim Roberts 7/16/2023
如果要进行算术运算,则需要在创建列之前删除单位。pandas 试图找出你的数据类型,当它看到 时,这是一个字符串。因此,制作数据并放入标题中。"1234 kt"1234kt
0赞 wjandrea 7/16/2023
另外,请制作一个最小的可重现示例,即最小的示例输入数据和所需的输出。您可能只使用 groupby 中的一个组,或者如果组很大,则可以使用组的一部分。有关具体信息,请参阅如何制作良好的可重现熊猫示例
0赞 Community 7/16/2023
请澄清您的具体问题或提供其他详细信息以准确说明您的需求。正如目前所写的那样,很难确切地说出你在问什么。
0赞 Surbhi Jain 7/16/2023
@wjandrea感谢您对我的帖子的反馈。将来应进行改进。

答:

0赞 user19077881 7/16/2023 #1

如果您使用混合数字和字母的值,那么它们将是 Pandas dtype 对象的字符串。您需要拆分数字部分,转换为整数,放入新列中,然后将 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