使用计算更改列值

2024-05-19 18:48:36 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的数据帧:dataFrame

我只想把“sous_nutrition”中的所有值乘以10^6

当我执行此代码时proportion_sous_nutrition_2017['sous_nutrition'] = proportion_sous_nutrition_2017.sous_nutrition * 1000000

它给了我这个newDataFrame

我想乘以100万,因为这个值是以“百万”为单位进行精确计算的,这样在

任何帮助都将不胜感激


Tags: 数据代码dataframe单位nutritionsousproportionnewdataframe
3条回答

试试看:

# create a new column called 'sous_nutrition_float' that only has 1.1 or 0.3 etc. and removes the > or < etc.
proportion_sous_nutrition_2017['sous_nutrition_float'] = proportion_sous_nutrition_2017['sous_nutrition'].str.extract(r'([0-9.]+)').astype(float)

proportion_sous_nutrition_2017['sous_nutrition'] = proportion_sous_nutrition_2017.sous_nutrition_float * 1000000

要查找数据类型,请运行:

print(proportion_sous_nutrition_2017.info())

在乘法之前,类型应为float或int等

 #   Column                Non-Null Count  Dtype  
---  ------                --------------  -----  
 0   sous_nutrition        3 non-null      float64
 1   sous_nutrition_float  3 non-null      float64
......
....
..

您可以使用pd.to_numeric(..., errors='coerce')强制转换为无法转换为数字的NaN

尝试:


proportion_sous_nutrition_2017['sous_nutrition'] = 1e6 * pd.to_numeric(proportion_sous_nutrition_2017['sous_nutrition'], errors='coerce')

解决方案可以将所有< xxx转换为xxx

>>> df['sous_nutrition']
0      1.2
1      NaN
2    < 0.1
Name: sous_nutrition, dtype: object

>>> df['sous_nutrition'].str.replace('<', '').astype(float)
0    1.2
1    NaN
2    0.1
Name: sous_nutrition, dtype: float64

因此,这应该是可行的:

proportion_sous_nutrition_2017['sous_nutrition_float'] = proportion_sous_nutrition_2017['sous_nutrition'].str.replace('<', '').astype(float) * 1000000

相关问题 更多 >