【发布时间】:2016-10-16 16:04:23
【问题描述】:
我有一个包含三列的 pandas 数据框:
Name Name2 DateTime
2016-06-10 05:22
2016-06-10 05:23
2016-06-10 14:25
Guest Guest1 2016-06-10 15:32
我必须用 NAN 替换空格。所以第 1、2、3 和 4 行的 AccountName 和 AccountName2 应该是 NAN。我尝试了以下语句:
df3['Name'] = df3['Name'].replace(r'[^\s+]',np.nan, regex=True)
但由于我在 Name 中的“Guest”之后有空格,所以所有 5 行都被 NAN 替换。
编辑:
这是我们的实际数据。
Name Name2 DateTime
\t\t-\r\n\t \t\t-\r\n\t 2016-06-10 05:22
\t\t-\r\n\t \t\t-\r\n\t 2016-06-10 05:23
\t\t-\r\n\t \t\t-\r\n\t 2016-06-10 14:25
\t\tGuest\r\n\t \t\tGuest1\r\n\t 2016-06-10 15:32
我用它来删除那些转义字符。
df['Name'] = df['Name'].str.replace('\r','').str.replace('\t','').str.replace('\n','').str.replace('-','')
删除这些字符后,我不确定现在在那个地方插入了什么。
【问题讨论】:
-
你可以去掉空格然后替换
df['Name'].str.strip().replace(r'[^\s+]',np.nan, regex=True) -
df['Name'] 是 float64 类型。我正在尝试将其转换为字符串然后替换它,但我仍然不成功。
-
有字符串怎么可能是float64?
-
@jezrael:我已经编辑了问题
-
客人姓名中的空格需要保留吗?