首页 > 解决方案 > 查找和替换在 Dataframe 中不起作用

问题描述

如果名称在查找数据框中可用,我想在 df 数据框中将 Found 列值更新为“是”。但下面的代码并没有替换该值。

import pandas as pd
    
df=pd.DataFrame({'Name':['Ram','David','Roy','John','Ed'],
                 'Found':['No','No','No','No','No'],
                })
lookup=pd.DataFrame({'Name':['Ram','Kate','John','Doll','Ed','Sins'],
                     'role':['App','App','App','App','App','App']})
df['Found'].replace(dict(zip(lookup.Name, 'Yes')),inplace=True)

我的输出-

Name       Found
0   Ram     No
1   David   No
2   Roy     No
3   John    No
4   Ed      No

我需要的是——

   Name    Found
0   Ram     Yes
1   David   Yes
2   Roy     No
3   John    Yes
4   Ed      Yes

标签: pythonpandas

解决方案


试试isin

df["Found"] = np.where(df["Name"].isin(lookup["Name"]), "Yes", "No")

推荐阅读