繁体   English   中英

pandas 如何从 df2 获取 df1 的值,而 df1 和 df2 的值在列上重叠

[英]pandas how to get values from df2 for df1 while df1 and df2 have values overlapped on column(s)

我有两个dfdf1看起来像,

df1
id
1
2
3
4
5

df2
doc_no    c_id
2         22
3         33
4         44
6         66
7         77

df1中的id值与df2doc_no的某些值重叠; 我想从df2获取c_iddf1以获得重叠的doc_no ,所以结果看起来像,

df1
id    c_id
1     NaN 
2     22
3     33
4     44
5     NaN

除了在iddoc_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM