我有一个三列的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
将所有数据替换为长度0
或1
:
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/