Python 如果字符串出现在列表中,则替换整个数据帧中的字符串
感谢您抽出时间来访问我的帖子。我有以下数据框:Python 如果字符串出现在列表中,则替换整个数据帧中的字符串,python,list,pandas,dataframe,replace,Python,List,Pandas,Dataframe,Replace,感谢您抽出时间来访问我的帖子。我有以下数据框: df1 col1 col2 1 virginia is cold, canada is cold too virginia is cold, canada is cold too 2 florida, virginia, washington are good florida, virginia, washington are go
df1
col1 col2
1 virginia is cold, canada is cold too virginia is cold, canada is cold too
2 florida, virginia, washington are good florida, virginia, washington are good
3 georgia, alabama, virginia are hot virginia is cold, canada is cold too
4 virginia, ohio, new castle are great hawaii, nebreska is wonderful
5 hawaii, nebreska is wonderful virginia, ohio, new castle are great
此外,我还有一个包含字符串的列表:
lst = ['virginia', 'hot', 'too']
如果整个数据框中的字符串与列表中的一个字符串匹配,我想将其替换为“xxxxxx”。例如,更换后,我的数据框会如下所示:
df1
col1 col2
1 xxxxxx is cold, canada is cold xxxxxx xxxxxx is cold, canada is cold xxxxxx
2 florida, xxxxxx, washington are good florida, xxxxxx, washington are good
3 georgia, alabama, xxxxxx are xxxxxx xxxxxx is cold, canada is cold xxxxxx
4 xxxxxx, ohio, new castle are great hawaii, nebreska is wonderful
5 hawaii, nebreska is wonderful xxxxxx, ohio, new castle are great
到目前为止,我已经尝试过了,但没有成功:
df1 = df1.replace(lst, "xxxxxx")
尝试迭代列表
lst
,如下所示:
import pandas as pd
...
lst = ['virginia', 'hot', 'too']
for s in lst:
df1.replace(s, 'xxxxx', inplace=True)
print( df1)
您可以从单词列表中创建词典并使用正则表达式:
df1.replace(lst, 'x' * 5, regex=True)
col1 col2
1 xxxxx is cold, canada is cold xxxxx xxxxx is cold, canada is cold xxxxx
2 florida, xxxxx, washington are good florida, xxxxx, washington are good
3 georgia, alabama, xxxxx are xxxxx xxxxx is cold, canada is cold xxxxx
4 xxxxx, ohio, new castle are great hawaii, nebreska is wonderful
5 hawaii, nebreska is wonderful xxxxx, ohio, new castle are great
lst = ['virginia', 'hot', 'too']
df1.replace({w: "xxxxxx" for w in lst}, regex=True)