我有一个非常大的熊猫数据框,其中包含字符串和整数列。我想在整个数据框中搜索特定子字符串,如果找到,用其他内容替换完整字符串。
我找到了一些通过指定要搜索的列来执行此操作的示例,如下所示:
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行不通的,因为我只是在搜索子字符串。谢谢你的帮助!
您可以使用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)