String 熊猫数据框用NaN替换空白
我有一个带有空单元格的数据框,希望用NaN替换这些空单元格。 先前在本论坛上提出的解决方案有效,但仅当单元包含空间时:String 熊猫数据框用NaN替换空白,string,pandas,na,String,Pandas,Na,我有一个带有空单元格的数据框,希望用NaN替换这些空单元格。 先前在本论坛上提出的解决方案有效,但仅当单元包含空间时: df.replace(r'\s+',np.nan,regex=True) 当单元格为空时,此代码不起作用。有没有人建议用panda代码替换空单元格。我认为最简单的方法是替换两次: In [117]: df = pd.DataFrame({'a':['',' ','asasd']}) df Out[117]: a 0 1 2 asas
df.replace(r'\s+',np.nan,regex=True)
当单元格为空时,此代码不起作用。有没有人建议用panda代码替换空单元格。我认为最简单的方法是替换两次:
In [117]:
df = pd.DataFrame({'a':['',' ','asasd']})
df
Out[117]:
a
0
1
2 asasd
In [118]:
df.replace(r'\s+',np.nan,regex=True).replace('',np.nan)
Out[118]:
a
0 NaN
1 NaN
2 asasd
这个怎么样
df.replace(r'\s+|^$', np.nan, regex=True)
其他两个答案都不考虑字符串中的所有字符。这样更好:
df.replace(r'\s+(++\)|#',np.nan,regex=True)。replace('',np.nan))
更多文档:正如您已经看到的,如果您执行明显的操作并将()替换为“无”,则会抛出错误:
df.replace('', None)
TypeError: cannot replace [''] with method pad on a DataFrame
解决方案似乎是简单地用numpy的NaN替换空字符串
import numpy as np
df.replace('', np.NaN)
虽然我不能100%确定在所有边缘情况下pd.NaN的处理方式与np.NaN完全相同,但我没有遇到任何问题。fillna()工作,将空值持久化到数据库中以代替np.NaN工作,将NaN持久化到csv工作
(熊猫版本18.1)尝试
df.replace(r'\s*,np.nan,regex=True)
实际上我的建议太激进了,这将所有str设置为nan
,给我一点时间,我认为最简单的事情是分两次完成,可以是一行:df.replace(r'\s+,np.nan,regex=True)。replace(“”,np.nan)
请注意,此解决方案并不总是有效。在我的例子中,它不适用于字符串2015-09-02 06:13:40
,也就是说,它导致将该值转换为NaN(而这本不应该发生)。检查字符串中是否有更多字符:。replace(r'\s++(++\)|#',np.nan,regex=True)。replace('',np.nan))
该(++\)|
做什么?很好用,顺便问一下,我很好奇,你为什么要用|#
?这将我的df:#000000
中的所有十六进制颜色替换为NaN。这不像是在df中有评论。。。更可能的情况是,图中有颜色。。