我有一个三列的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)


但是由于名称中“来宾”之后有空格,因此所有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('-','')


删除这些字符后,我不确定现在在该位置插入了什么。

最佳答案

另一种解决方案是找到数据length,然后通过boolean indexing将所有数据替换为长度01

print (df.applymap(len))
   Name  Name2  DateTime
0     0      0        16
1     0      0        16
2     0      0        16
3     5      6        16

df[df.applymap(len) < 2] = np.nan
print (df)
    Name   Name2          DateTime
0    NaN     NaN  2016-06-10 05:22
1    NaN     NaN  2016-06-10 05:23
2    NaN     NaN  2016-06-10 14:25
3  Guest  Guest1  2016-06-10 15:32

关于python - 在 Pandas 数据框中用NAN替换空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37837148/

10-12 21:48
查看更多