Панды, как получить значения из df2 для df1, в то время как df1 и df2 перекрывают значения столбцов - PullRequest
0 голосов
/ 03 октября 2019

У меня есть два 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;Я хочу получить c_id для df1 из df2 для перекрывающихся doc_no, поэтому результат выглядит так:

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

, кроме использования df1 lefts join df2 на id и doc_no, мне интересно, есть ли другой лучший способ сделать это, более краткий и эффективный.

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Использование .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
1 голос
/ 03 октября 2019

Вы можете использовать df1.merge(df2) (в основном это левое / правое / внутреннее соединение). В любом случае, у вас есть проблемы с производительностью в вашей программе из-за левого соединения? Это должно быть сделано быстро.

С уважением!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...