我是熊猫新手,希望获得帮助。 我有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']的重复项
答案 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