Pandas数据帧通过查找子串

时间:2017-10-07 18:20:43

标签: python-2.7 pandas

我有一个非常大的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将无法正常工作,因为我只搜索子字符串。谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

您可以将数据框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

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

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