[英]pandas how to get values from df2 for df1 while df1 and df2 have values overlapped on column(s)
我有两个df
, df1
看起来像,
df1
id
1
2
3
4
5
df2
doc_no c_id
2 22
3 33
4 44
6 66
7 77
df1
中的id
值与df2
中doc_no
的某些值重叠; 我想从df2
获取c_id
的df1
以获得重叠的doc_no
,所以结果看起来像,
df1
id c_id
1 NaN
2 22
3 33
4 44
5 NaN
除了在id
和doc_no
上使用df1
lefts join df2
之外,我想知道是否还有其他更好的方法可以做到这一点,更简洁有效。
您可以使用df1.merge(df2)
(这基本上是一个左/右/内连接更多描述)。 无论如何,由于左连接,您的程序是否有任何性能问题? 这应该很快完成。
问候!
使用.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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.