将空格替换为NAN在pandas数据帧中

2024-10-03 00:24:14 发布

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

我有一个包含三列的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。我尝试了以下陈述:

^{pr2}$

但由于我在名字中的“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('-','')

删除这些字符后,我不知道现在在那个地方插入了什么。在


Tags: 数据namepandasdfdatetimenan空白replace
3条回答

如果您确定名称之间不会有空格,那么可以使用.strip()来删除字符串末尾的任何空白(或任何真正的空格)。在

 df3['Name'] = df3['Name'].strip().replace(r'[^\s+]',np.nan, regex=True)

既然你不需要空间,这应该行得通。在

df3['Name'] = df3['Name'].replace('[\s]+',"", regex=True) #Gets rid of all blank spaces
df3['Name'] = df3['Name'].replace('',np.nan, regex=True) #Replace completely empty cells with nan

另一种解决方案是找到length,然后^{}用长度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

相关问题 更多 >