我有一个包含各种问题的值列,它返回一个对象数据类型,它是这样的:
import pandas as pd
data = {'Observation':['1', '2', '3', '4', '5', '6', '7', '8', '9'],
'Value':['5.6' , '1 068,0', '1 956.3', '', 'NaN', '65,0', 'nan', '23,5', '30.0']}
df = pd.DataFrame(data)
主要问题是:
- 混合小数(点和逗号)
- 两种类型的千位分隔符
- 混合 NaN 和 nan 以及 na 值的空字符串
- 末尾点0或逗号0
期望的结果是具有 float64 数据类型且具有正确 NaN 值的列
谢谢!
最佳答案
Pandas series.replace
接受字典和 regex
选项:
df['Value'] = pd.to_numeric(df['Value'].replace({' ':'', ',':'.'}, regex=True),
errors='coerce')
输出:
Observation Value
0 1 5.6
1 2 1068.0
2 3 1956.3
3 4 NaN
4 5 NaN
5 6 65.0
6 7 NaN
7 8 23.5
8 9 30.0
关于python - 带混合小数的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66139442/