【发布时间】:2017-10-26 10:55:03
【问题描述】:
我有一个如下的数据框:
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
它回馈我需要的东西。
然而,当我想将 'o' 替换为 np.nan 时,它会将整个字符串更改为 np.nan。 pandas的文档有解释吗?我可以通过source code找到一些资料。
更多信息:(它将整个字符串更改为np.nan)
df.replace({"o":np.nan},regex=True)
Out[669]:
first last
0 alice NaN
1 NaN bar
2 NaN baz
【问题讨论】:
-
你想要什么结果?
-
@ShiheZhang 没有想要的结果,为什么替换+正则表达式有这种行为,我找不到与此相关的任何文档,唯一的方法是通过源代码阅读。
-
您使用的是哪个版本的
pandas?这实际上发生在任何非字符串对象上,据我所知,尝试传递它object() -
@juanpa.arrivillaga my pandas pd.__version__ Out[692]: '0.20.3'
-
您将需要使用
for index, row in df.iterrows():循环遍历 df 和类似`if(s.contains("0"))` 来检查它是否存在。然后更新整个值而不是字符