基于索引resu的Pandas中相邻列的返回

2024-05-19 12:34:58 发布

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

我是新来的熊猫,想得到一些帮助。 我有两张单子;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['shorted\u string']中找到A['shorted\u string'],并将B['Area']附加到A

我想我已经找到了索引,当A出现在B中时,但是当我的索引是真的时,我似乎无法找出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

-关键注释['shorted\u strin']有重复项


Tags: 数据列表stringareapricelonmanshortened
3条回答

一种方法是让

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

合并和一些清理

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

使用map

dfa['area'] = dfa.iloc[:,1].map(dfb.set_index("'Shortened_String'").iloc[:,1])

如果列'Shortened_String'不在df中的1位置,则将.iloc[:,1]更改为.loc[:, 'Shortened_String']

输出:

    '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

相关问题 更多 >