大熊猫-根据索引结果返回大熊猫中的相邻列

时间:2019-02-02 14:43:42

标签: python pandas

我是熊猫新手,希望获得帮助。 我有2个列表A和B,A是我正在整理的数据,B是我正在用作参考的数据列表。

下面是列表A的示例。

     A
   Oringinal_String    Shortened_String    Price
1    BR3 6yh             BR3               56789
2    BL2 8hs             BL2               93882
3    AR3 9hs             AR3               67890
4    UB3 7hy             UB3               23453
5    BR3 7yh             BR3               76801

下面是列表B的示例

     B
     Oringinal_String    Shortened_String   Area
1    BR3 6yb             BR3                 MAN
2    BL2 2xs             BL2                 LON
3    XA2 1wl             XA2                 NEW
4    UB3 9xv             UB3                 LUT

我想查找何时在B ['shortened_string']中找到A ['shortened_string']并将B ['Area']附加到A。

我认为我已经成功建立索引以查找A何时出现在B中,但是当我的索引为true时似乎无法摆脱B ['Area'],不确定这样做是否正确?

A.loc[A.index.isin(B['shortened_strin'])]

我希望下车:

  A
     Oringinal_String    Shortened_String  Price    Area
1    BR3 6yh             BR3               56789    MAN
2    BL2 8hs             BL2               93882    LON
3    AR3 9hs             AR3               67890    
4    UB3 7hy             UB3               23453    LUT
5    BR3 7yh             BR3               76801    MAN

-关键注意事项是A ['shortened_strin']的重复项

3 个答案:

答案 0 :(得分:1)

合并和一些清理

A.merge(B, on = 'Shortened_String', how = 'left', suffixes = ('', '_y')).drop('Oringinal_String_y',1).fillna('')


    Oringinal_String    Shortened_String    Price   Area
0   BR3 6yh             BR3                 56789   MAN
1   BL2 8hs             BL2                 93882   LON
2   AR3 9hs             AR3                 67890   
3   UB3 7hy             UB3                 23453   LUT
4   BR3 7yh             BR3                 76801   MAN

答案 1 :(得分:0)

一种方法是让

A['Area'] = A.merge(B, on='shortened_strin', how='left')['Area']

答案 2 :(得分:0)

使用map

dfa['area'] = dfa.iloc[:,1].map(dfb.set_index("'Shortened_String'").iloc[:,1])
如果列.iloc[:,1]不在df中的位置.loc[:, 'Shortened_String']中,请

'Shortened_String'的{​​{1}}更改为1

输出:

    'Oringinal_String'  'Shortened_String'  'Price' area
1   BR3 6yh             BR3                  56789  MAN
2   BL2 8hs             BL2                  93882  LON
3   AR3 9hs             AR3                  67890  NaN
4   UB3 7hy             UB3                  23453  LUT
5   BR3 7yh             BR3                  76801  MAN