我有一个如下数据框:
data1 = {"first":["alice", "bob", "carol"],
"last_huge":["foo", "bar", "baz"]}
df = pd.DataFrame(data1)
Run Code Online (Sandbox Code Playgroud)
例如,我想将所有字符'o'替换为'a':
那我做
df.replace({"o":"a"},regex=True)
Out[668]:
first last
0 alice faa
1 bab bar
2 caral baz
Run Code Online (Sandbox Code Playgroud)
它还给我我需要的东西。
但是,当我要将'o'替换为时np.nan,它将整个字符串更改为np.nan。熊猫的文件有什么解释吗?我可以通过源代码找到一些信息。
更多信息:(它将整个字符串更改为np.nan)
df.replace({"o":np.nan},regex=True)
Out[669]:
first last
0 alice NaN
1 NaN bar
2 NaN baz
Run Code Online (Sandbox Code Playgroud)
NaN 始终用作 Missing 的占位符,当用“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
Run Code Online (Sandbox Code Playgroud)
在某些语言中,您会看到skipna = False作为默认行为,有些人强烈认为NaN应该始终污染所有数据。Pandas 采取了更务实的方法......
真正的问题是你期望它在 NaN 的情况下做什么?
| 归档时间: |
|
| 查看次数: |
1189 次 |
| 最近记录: |