【问题标题】:Pandas dataframe replace string in multiple columns by finding substringPandas 数据框通过查找子字符串替换多列中的字符串
【发布时间】:2017-10-08 02:34:36
【问题描述】:

我有一个非常大的 pandas 数据框,其中包含字符串和整数列。我想在整个数据框中搜索特定的子字符串,如果找到,请将完整的字符串替换为其他内容。

我发现一些examples 通过指定要搜索的列来执行此操作,如下所示:

df = pd.DataFrame([[1,'A'], [2,'(B,D,E)'], [3,'C']],columns=['Question','Answer'])
df.loc[df['Answer'].str.contains(','), 'Answer'] = 'X'

但是因为我的数据框有几十个没有特定顺序的字符串列,所以我不想全部指定它们。据我所知,使用df.replace 将不起作用,因为我只是在搜索子字符串。感谢您的帮助!

【问题讨论】:

    标签: python-2.7 pandas


    【解决方案1】:

    您可以将数据框replace 方法与regex=True 一起使用,并使用.*,.* 来匹配包含逗号的字符串(您可以将comma 替换为您想要检测的其他任何其他子字符串):

    str_cols = ['Answer']    # specify columns you want to replace
    df[str_cols] = df[str_cols].replace('.*,.*', 'X', regex=True)
    df
    #Question   Answer
    #0      1       A
    #1      2       X
    #2      3       C
    

    或者如果你想替换所有的字符串列:

    str_cols = df.select_dtypes(['object']).columns
    

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 2019-12-28
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2018-03-26
      相关资源
      最近更新 更多