python - 将带有空格的数据帧转换为数字、障碍物 - 空格(例如 3 014.0 即 '3\xa0014.0' )

标签 python pandas

我有一个数据框,其中存储的不是预期的数值 “Object”类型的数据看起来像 3 014.0,即“3\xa0014.0”,而不是 3014.0 - 空格(即“\xa0”) - 造成转换问题

问题:有什么方法可以将其转换为数字吗?

奇怪的事情:看来我可以对单个元素进行转换:

 float( df.iloc[0,0].replace('\xa0', '') ) # - works

但这不适用于整个系列

df['p1'].astype('str').replace('\xa0','') # does nothing

-- 不执行任何操作

我尝试过:

  1. pd.to_numeric - 给出:无法解析字符串
  2. 尝试转换为字符串,然后使用替换:

df['p1'].astype('str').replace('\xa0','') 什么也不做

数据示例:

df.iloc[0:3,0]

2017-10-10 11:32:49.895023    3 014.0
2017-10-10 11:33:11.612169    3 013.5
2017-10-10 11:33:22.488124    3 013.0
Name: p1, dtype: object

df.iloc[0:3,0]:

'3\xa0014.0'

最佳答案

改用这个:df['p1'] = df['p1'].apply(lambda x: float(x.replace('\xa0','')))

df.iloc[0,0] 是一个字符串,而 df['p1'] 是一个 pandas 系列。与字符串和 with a series 关联的 replace 方法是不同的。当您对一个系列调用替换时,pandas 将尝试替换元素。

例如,

df = pd.DataFrame({'name': 'alexander'})` df['name'].replace('a', 'x') #什么也不做` df['name'].replace('alexander', 'x') #用 x 替换名字 alexander

df['p1'].apply(lambda x: float(x.replace('\xa0',''))) 将替换方法应用于每个元素(恰好是一个字符串)位于 p1 列中。您可以阅读有关该方法的更多信息 here .

希望这能让事情变得更清楚:)

关于python - 将带有空格的数据帧转换为数字、障碍物 - 空格(例如 3 014.0 即 '3\xa0014.0' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46663994/

相关文章:

python - FigureCanvasAgg' 对象没有属性 'invalidate' ? python 绘图

python - 如何用函数记录一个文件?

python - 测试发生了多少方法调用以及传递了哪些参数(测试 django mixin 类)

Python:如何使用 rdflib 将 Dbpedia 中的信息添加到我的图表中?

使用 Pandas 数据读取器进行 Python 回归建模

python - 根据 Pandas 中的列表删除行

python - 从 2.3.1 升级到 Spark2.4.2 但 mongodb 连接器停止工作

python - 你知道其他有像 Python 这样的交互模式的编程语言吗?

python - 根据 'hour' 日期时间选择 Pandas 数据框行

python - 使用现有数据框中的值的新数据框