我有一个数据框如下:
data1 = {"first":["alice", "bob", "carol"],
"last_huge":["foo", "bar", "baz"]}
df = pd.DataFrame(data1)
例如,我想将所有字符“o”替换为“a”:
那我就做
df.replace({"o":"a"},regex=True)
Out[668]:
first last
0 alice faa
1 bab bar
2 caral baz
它回馈我所需要的。
However,当我想将 'o' 替换为np.nan
, 它将把整个字符串更改为np.nan
. pandas的文档有什么解释吗?我可以通过以下方式找到一些信息源代码 https://github.com/pandas-dev/pandas/blob/v0.20.3/pandas/core/generic.py#L3678-L3926 .
更多信息:(它将整个字符串更改为np.nan
)
df.replace({"o":np.nan},regex=True)
Out[669]:
first last
0 alice NaN
1 NaN bar
2 NaN baz
NaN 始终用作缺失的占位符 https://stackoverflow.com/a/17534682/1240268,当用“missing”替换字符串的一部分时,它只能意味着整个条目被破坏。我听说过这称为 NaN 污染(或类似的,看看我是否能找到一些参考资料),因为如果 NaN 接触到数据就会受到损害。
也就是说,情况并非总是如此:
In [11]: s = pd.Series([1, 2, np.nan, 4])
In [12]: s.sum()
Out[12]: 7.0
In [13]: s.sum(skipna=False)
Out[13]: nan
在某些语言中,您会看到skipna = False作为默认行为,有些人强烈认为NaN应该always污染所有数据。 Pandas 采取了更务实的方法......
真正的问题是你期望它在 NaN 的情况下做什么?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)