基于条件合并列

2024-04-27 05:04:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个表,我想用id列将一个表映射到另一个表。这两个表的ID大小不同。如果找不到ID,则列结果为n/a

表A

id   type
2231  C
1213  A
1241  C

表B

id     other columns
2232       X
1213       Y
1233       I

目标是映射表A中的id值,并在表B中添加一个addition列

理想桌子

id     other columns    type
2232       X             n/a
1213       Y             A
1233       I             n/a

我疲于从A表中找出所有的A型

typeA = df_A.id.loc[df_A.type == 'A']).tolist()
df_B.type = df_B.loc[df_B.isin(typeA)]
    ...

我想用id合并这两个表,但是它们的id大小不同,可能也有不同的id。 有没有更有效的方法?谢谢你抽出时间。你知道吗


Tags: columns方法id目标dftypelocother
2条回答

使用参数how='left'fillna以及n/a可以在id上使用^{},如下所示:

df_B.merge(df_A,on='id',how='left').fillna('n/a')

     id other columns type
0  2232             X  n/a
1  1213             Y    A
2  1233             I  n/a

你可以用地图

dfB['type'] = dfB.id.map(dfA.set_index('id').type)

    id   other columns  type
0   2232    X           NaN
1   1213    Y           A
2   1233    I           NaN

相关问题 更多 >