python - 带混合小数的列

标签 python pandas

我有一个包含各种问题的值列,它返回一个对象数据类型,它是这样的:

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/

相关文章:

python - 关于python OpenOPC库的两个问题

python - 从数组及其转置创建邻接矩阵

python - 两个多边形中的检查点(代码改进)

python - 绘制数据框的散点图

python - 干净地将 pandas 数据框硬编码到 python 脚本中?

python - 造轮失败/"Error: INCLUDE Environment Variable is empty"

python - 如何使用 BeautifulSoup 获取这些值?

python - 从 pandas DataFrame 制作热图

python - 将函数应用于两个 DataFrame 列并从结果创建新列

Python peewee 迭代 SelectQuery