我有两个rep(1:5, each = 6)
,df
看起来像
df1
df1
id
1
2
3
4
5
df2
doc_no c_id
2 22
3 33
4 44
6 66
7 77
中id
的值与df1
中doc_no
的某些值重叠;我想从重叠的df2
的{{1}}中获取c_id
的{{1}},所以结果看起来像是
df1
除了在df2
和doc_no
上使用df1
id c_id
1 NaN
2 22
3 33
4 44
5 NaN
左联接df1
之外,我想知道是否还有其他更好的方法可以做到更简洁,更有效。
答案 0 :(得分:1)
您可以使用df1.merge(df2)
(基本上是对左/右/内连接的详细说明)。无论如何,由于左联接,您的程序是否存在性能问题?这应该很快完成。
致谢!
答案 1 :(得分:1)
使用.map()
>>> df2 = pd.DataFrame({'doc_no':[2,3,4,6,7], 'c_id':[22,33,44,66,77]})
>>> df1 = pd.DataFrame({'id':[1,2,3,4,5]})
>>> df1
id
0 1
1 2
2 3
3 4
4 5
>>> df2
doc_no c_id
0 2 22
1 3 33
2 4 44
3 6 66
4 7 77
>>> df2_dict = dict(zip(df2['doc_no'], df2['c_id']))
>>> df1['c_id'] = df1['id'].map(df2_dict)
>>> df1
id c_id
0 1 NaN
1 2 22.0
2 3 33.0
3 4 44.0
4 5 NaN