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)