我有一个例子 df:
df = pd.DataFrame({'A': ['100,100', '200,200'],
'B': ['200,100,100', '100']})
A B
0 100,100 200,100,100
1 200,200 100
我想用任何东西替换逗号“,”(基本上,删除它们)。您可能会猜到一个真实世界的应用程序,因为许多数据都是用千位分隔符编写的,请随时向我介绍更好的方法。
现在我阅读了 pd.replace() 的文档 here我尝试了多个版本的代码 - 它没有引发任何错误,但不会修改我的数据框。
df = df.replace(',','')
df = df.replace({',': ''})
df = df.replace([','],'')
df = df.replace([','],[''])
我可以在指定列名并为系列使用“.str.replace()”方法时让它工作,但想象一下有 20 列。我也可以在 df.replace() 方法中指定列,但必须有更方便的方法来完成如此简单的任务。我可以编写一个自定义函数,但 pandas 是一个非常棒的库,它一定是我所缺少的。
这有效:
df['A'] = df['A'].str.replace(',','')
谢谢!
最佳答案
df.replace
有一个参数 regex
将其设置为 True
以进行部分匹配。
默认 regex
参数是 False
。当 False
时,它仅替换完全匹配 或完全匹配。
来自 Pandas 文档:
str: string exactly matching to_replace will be replaced with the value.
df.replace(',', '', regex=True)
A B
0 100100 200100100
1 200200 100
在pd.Series.str.replace
默认情况下,它的 regex
参数是 True
。
来自文档:
Equivalent to
str.replace()
orre.sub()
, depending on the regex value.
判断传入的模式是否为正则表达式:
- 如果为真,则假定传入的模式是正则表达式。
- 如果为 False,则将模式视为文字字符串
关于python - 在 Python 中替换 DataFrame 的所有单元格中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64730406/