Pandas 数据框通过查找子字符串替换多列中的字符串

Aer*_*ero 3 python-2.7 pandas

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

我找到了一些通过指定要搜索的列来执行此操作的示例,如下所示:

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

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

Psi*_*dom 6

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

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
Run Code Online (Sandbox Code Playgroud)

或者如果要替换所有字符串列:

str_cols = df.select_dtypes(['object']).columns
Run Code Online (Sandbox Code Playgroud)