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