簡體   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