根据条件合并列

时间:2018-10-16 04:58:11

标签: python pandas dataframe

我有两个表,我想用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中添加一个附加列。

理想表

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

我厌倦了从表A中找到所有的Type A。

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

我考虑过按ID合并两个表,但是它们具有不同的ID大小,也许也有不同的ID。 有没有更有效的方法可以做到这一点?感谢您的时间。

2 个答案:

答案 0 :(得分:4)

您可以使用地图

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

答案 1 :(得分:2)

您可以将id上的merge与参数{{1}一起使用,将how='left'fillna一起使用,

n/a