python - 在 Python 中替换 DataFrame 的所有单元格中的值

标签 python pandas dataframe

我有一个例子 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() or re.sub(), depending on the regex value.

判断传入的模式是否为正则表达式:

  • 如果为真,则假定传入的模式是正则表达式。
  • 如果为 False,则将模式视为文字字符串

关于python - 在 Python 中替换 DataFrame 的所有单元格中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64730406/

相关文章:

python - 通过按 python 中数据帧列的值分组来创建字典

r - 如何为数据框中的每一行设置编号名称?

python - 为数据框Python列中的每个唯一值创建Excel工作表

python - pandas 数组的条件累积和

python - 循环数据帧并生成汇总统计数据时出现问题

python - 在 pandas 的帮助下按条件删除行

python - 如何将Python数据框中的对象转换为仅int数字?

python - 取消 pandas 数据框时出错

python - 同时按日期和ID分组 Pandas 数据框

python - 在 Pandas 的整数数据框中使用 DataFrame.at 分配 nan 值时出现 ValueError