将带空格的数据帧转换为数字、障碍空格(例如3 014.0,即“3\xa0014.0”)

2024-09-10 07:15:13 发布

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

我有一个数据帧,其中存储的不是预期的数值 “Object”类型的数据看起来像3014.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\数字-给出:无法分析字符串
  2. 尝试转换为字符串,然后使用替换:

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

数据示例:

你知道吗测向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

你知道吗测向iloc[0:3,0]:

'3\xa0014.0'

Tags: 数据字符串类型dfobject数字空白replace
1条回答
网友
1楼 · 发布于 2024-09-10 07:15:13

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

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

例如

df = pd.DataFrame({'name': 'alexander'})` df['name'].replace('a', 'x') #does nothing` df['name'].replace('alexander', 'x') #replaces the name alexander with x

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

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

相关问题 更多 >