pandas 如果一个 Dataframe 列中的字符串包含(子字符串)在另一个 Dataframe 列中,则标记该字符串

ovfsdjhp  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(260)

我需要获取df 1并检查df 2上City列中包含“Code”列值的位置(作为子字符串),以便使用添加的新“exists”列呈现df 1。
df1:|姓名|姓|编码||--|- -|- ———-||若翰|石南|唐||埃里克|英里数|叉||杜克|布拉沃|布里尔||占士|麦克|提升管||亚历克|钝头|杰杰赫|
DF2:
| 识别码|城市名称|
| - -|- -|
| 五五二|巴黎|
| 四百三十二|伦敦|
| 五五六|纽约|
| 四百五十七|罗马|
新DF 1输出:
df1:
| 姓名|姓|编码|存在|
| - -|- -|- -|- -|
| 若翰|石南|唐|真的|
| 埃里克|英里数|叉|真的|
| 杜克|布拉沃|布里尔|假的|
| 占士|麦克|提升管|真的|
| 亚历克|钝头|杰杰赫|假的|
我尝试了以下代码,但“exists”列中的所有值都是false:df 1 [“存在”]= df 1 [“代码”].isin(df 2 [“城市”])
多谢

zfycwa2u

zfycwa2u1#

在使用.isin时,您试图只查找完全匹配的字符串,而不是子字符串。

The result will only be true at a location if all the labels match.

一种解决方案是逐个字符地验证每个元素,如下所示

df1.Code.apply(lambda x: any(x in s for s in df2.City))

相关问题