我有 2 个数据框,其中有部分匹配的列:
data_a = ['a', 'b', 'c', 'd', 'e', 'f']
data_b = ['b', 'd', 'f', 'h']
df1 = pd.DataFrame(data_a, columns=['data'])
df2 = pd.DataFrame(data_b, columns=['data'])
我想获得
df2
到 df1
中数据之间的索引匹配。
比如:
indices = [1, 3, 5, None]
因此
df2
的 0 索引行与 df1
的 1 索引行匹配,df2
的 1 索引行与 df1
的 3 索引行匹配,依此类推...
如果不匹配,则值为
None
或任何负值。
我可以循环执行,但速度很慢。
我正在寻找有效的方法来获得这个或类似的东西。
reset_index
,然后向左-merge
:
df2.merge(df1.reset_index(), on='data', how='left')
输出:
data index
0 b 1.0
1 d 3.0
2 f 5.0
3 h NaN