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

时间:2019-10-03 09:37:34

标签: python python-3.x pandas dataframe

我有两个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

值与df1doc_no的某些值重叠;我想从重叠的df2的{​​{1}}中获取c_id的{​​{1}},所以结果看起来像是

df1

除了在df2doc_no上使用df1 id c_id 1 NaN 2 22 3 33 4 44 5 NaN 左联接df1之外,我想知道是否还有其他更好的方法可以做到更简洁,更有效。

2 个答案:

答案 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