Pandas 数据框“df1”有一个包含字符串值的列(“Receiver”)。
df1
Receiver
44 BANK
106 restaurant
149 Tax office
63 house
55 car insurance
我想遍历该列的每一行,检查它们是否与另一个数据框(“df2”)中的值(主要是一个或两个词的搜索词)匹配,并在正确的行上返回匹配列的标题。我正在尝试使用以下功能来做到这一点:
df1.Receiver.apply(lambda x:
''.join([i for i in df2.columns
if df2.loc[:,i].str.contains(x).any()])
)
问题: 但是,这只适用于 df1 的“Receiver”列中仅包含一个单词的值(因此“BANK”、“restaurant”和“house”在这种情况下有效)。
包含两个或多个单词的值不起作用(在这种情况下为“税务局”和“汽车保险”)。
str.contains() 不应该也找到部分匹配吗?我如何才能找到“接收者”列中包含两个或多个单词的值的部分匹配项?
编辑:这是df2的样子,它有不同的类别作为列标题,然后每列都有搜索词作为值
df2
Banks Restaurants Car House
0 BANK restaurant car house
1 bank mcdonalds
2 Subway
这是单个图像中的整个问题,可以在右侧看到输出,并且找不到类别“汽车”和“税务局”,因为接收者“汽车保险”和“税务局”(df1 中的接收者列)仅与搜索词“car”和“Tax”(df2 的“Car”和“Tax office”列中的值)部分匹配。