python - 替换 pandas 中整个数据框中包含子字符串的整个字符串

标签 python pandas

我想替换包含特定子字符串的所有字符串。例如,如果我有这个数据框:

import pandas as pd
df = pd.DataFrame({'col_1': ['abc', 'abc123', 'abc456'], 
               'col_2': ['abc123', '123', 'abc456']})

我想用字符串“test”替换包含“abc123”的字符串,如下所示:

df = pd.DataFrame({'col_1': ['abc', 'test', 'abc456'], 
               'col_2': ['test', '123', 'abc456']})

我已经尝试过:

df.loc[df['col_1'].str.contains('abc123',na=False), 'col_1'] = 'test'

但是它每次只能处理一个col,我有数百个col要处理。我怎样才能一次性完成呢?

最佳答案

请注意,我更改了示例以包含 zzabc123zz,因为您在问题中提到了“子字符串”,但您提供的示例未显示该用例。

您可以将 df.replace 与正则表达式一起使用。

import pandas as pd
import re

df = pd.DataFrame({'col_1': ['abc', 'abc123', 'abc456'],
                   'col_2': ['abc123', '123', 'zzabc123zz']})

df.replace(re.compile('.*abc123.*'), 'test', inplace=True)
print(df)

输出

    col_1  col_2
0     abc   test
1    test    123
2  abc456   test

关于python - 替换 pandas 中整个数据框中包含子字符串的整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59599484/

相关文章:

python - Pandas :删除连续重复

python - 不同分组重复组的累积总和

python - pandas dataframe 按 nan 数删除列

python - 如何使用带有 Selenium 的 Headless Google Chrome 保存手机屏幕截图

python - 如何在python中使用gensim获取相关的匹配词?

python - 我可以装饰一个显式函数调用吗,比如 np.sqrt()

python pandas时间序列年提取

python-3.x - pandas/numpy NaN 如何以二进制格式表示

javascript - 使用 Flask 在 HTML 上实时更新动态变量

python - 如何将非序列号添加到范围中?