numpy 在pandas中根据不同子框架中单元格的内容,从不同子框架中的不同名称的列创建查找列

tyky79it  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(114)

我已经尝试

df1 = pd.merge(df1, df2, how="inner", on="UserID")

但这不管用。
我得到一个KeyError,但我甚至不完全相信它会给予我正确的答案。这不会只是将第二列的数据放在第一列旁边,没有排序,而实际上我需要某种逐单元格查找来确定哪个UserID对应于哪个Email和Name吗?
我有这个DF
| objectID| userId|描述|
| --|--|--|
| Ajh1|约翰123|草莓1|
| Basd 2|凯蒂456|橙色1|
| Chg3|莎拉789|南瓜1|
| Eas1|约翰123|草莓2|
| FJD3|莎拉789|南瓜2|
| Gar2|凯蒂456|橙色2|
| DFD4| emilio012|甜瓜1|
| Ddfd5| emilio012|甜瓜2|
和这一个
| objectID|电子邮件|名称|
| --|--|--|
| 凯蒂456| katieATkatieDOTcom|凯瑟琳·史密斯|
| emilio012| emilioAemilioDOTcom|埃米利奥·佩雷斯|
| 约翰123| johnAT johnDOT com|约翰·穆勒|
| 萨拉789| saraATsaraDOT|萨拉·德拉克鲁斯|
我想要的是
| 对象ID|用户ID|描述|电子邮件|名称|
| --|--|--|--|--|
| Ajh1|约翰123|草莓1| johnAT johnDOT com|约翰·穆勒|
| Basd 2|凯蒂456|橙色1| katieATkatieDOTcom|凯瑟琳·史密斯|
| Chg3|莎拉789|南瓜1| saraATsaraDOT|萨拉·德拉克鲁斯|
| Eas1|约翰123|草莓2| johnAT johnDOT com|约翰·穆勒|
| FJD3|莎拉789|南瓜2| saraATsaraDOT|萨拉·德拉克鲁斯|
| Gar2|凯蒂456|橙色1| katieATkatieDOTcom|凯瑟琳·史密斯|
| DFD4| emilio012|甜瓜1| emilioAemilioDOTcom|埃米利奥·佩雷斯|
| Ddfd5| emilio012|甜瓜2| emilioAemilioDOTcom|埃米利奥·佩雷斯|

quhf5bfb

quhf5bfb1#

IIUC,你可以这样做(我假设df2中的sara789应该是sarah789):

out = (
    df1.merge(df2, left_on="UserID", right_on="ObjectID", how="left")
    .rename(columns={"ObjectID_x": "ObjectID"})
    .drop(columns=["ObjectID_y"])
)
print(out)

图纸:

ObjectID     UserID  Description                 Email             Name
0     Ajh1    john123  Strawberry1      johnATjohnDOTcom      John Muller
1    Basd2   katie456      Orange1    katieATkatieDOTcom  Katherine Smith
2     Chg3   sarah789     Pumpkin1      saraATsaraDOTcom  Sara De La Cruz
3     Eas1    john123  Strawberry2      johnATjohnDOTcom      John Muller
4     Fjd3   sarah789     Pumpkin2      saraATsaraDOTcom  Sara De La Cruz
5     Gar2   katie456      Orange2    katieATkatieDOTcom  Katherine Smith
6     Dfd4  emilio012       Melon1  emilioATemilioDOTcom     Emilio Perez
7    Ddfd5  emilio012       Melon2  emilioATemilioDOTcom     Emilio Perez

相关问题