Как объединить кадры данных pandas и перезаписать значения, соответствующие совпадающим строкам в одном из них? - PullRequest
0 голосов
/ 21 февраля 2019

Я хотел бы объединить два кадра данных в Python, как показано ниже.

Если df1: enter image description here

и df2: enter image description here

Я бы хотел, чтобы результат выгляделкак это: enter image description here

По сути, мне нужно объединить два кадра данных с точки зрения дней и дней в порядке;дни имеют соответствующие значения ставок, которые должны оставаться неизменными, если, например, если вы посмотрите на день 9, он представлен как в dfs, так и в ставках, отличающихся от ставки, которую необходимо сохранить в df2.

Я действительно хорошо знаю Python и не очень хорошо понимаю pd.merge, поэтому я был бы чрезвычайно благодарен, если бы кто-то мог помочь.

Спасибо большое!

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Использование concat () , sort_values ​​() и drop_duplicates () :

>> outcome = pd.concat([df1, df2]).sort_values('days').drop_duplicates(subset=['days'],keep='last').reset_index(drop=True)
>> outcome
    days    interest rate
0   2   0.02560
1   3   0.01230
2   4   0.01470
3   5   0.25600
4   6   0.78560
5   7   0.09850
6   8   0.05890
7   9   0.02268
8   12  0.01235
0 голосов
/ 21 февраля 2019

Вы ищете combine_first

df2.set_index('day',inplace=True)
df2=df2.combine_first(df1.set_index('day')).reset_index()
df2
Out[552]: 
   day  val
0    2  1.0
1    3  1.0
2    4  2.0
3    5  2.0
4    6  2.0
5    7  2.0
6    8  2.0
7    9  3.0
8   12  3.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...