Замена строк в Pandas DataFrame другим DataFrame на основе индекса - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть 2 dataFrames

df1
    B   C
A       
0   300 6
1   400 7
2   500 8
3   600 9

df2
    B   C
A       
2   433 99
3   555 99

Вот как я их создаю:

df1 = pd.DataFrame({'A': [0, 1, 2, 3],
                   'B': [300, 400, 500, 600], 
                   'C': [6, 7, 8, 9]})
df1.set_index('A', inplace=True)
df2 = pd.DataFrame({'A': [2, 3],
                    'B': [433, 555],
                    'C': [99, 99]})
df2.set_index('A', inplace=True)

Я хочу заменить все строки из df1 на строки из df2 на основепо индексу результат должен выглядеть следующим образом:

df_result
    B   C
A       
0   300 6
1   400 7
2   433 99
3   555 99

Какой самый элегантный способ сделать это?

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Это то, для чего update предназначено:

df1.update(df2)
>>> df1
       B     C
A             
0  300.0   6.0
1  400.0   7.0
2  433.0  99.0
3  555.0  99.0
0 голосов
/ 11 декабря 2018

Уведомление с помощью .loc не изменит тип столбца

df1.loc[df2.index,:]=df2
df1
Out[20]: 
     B   C
A         
0  300   6
1  400   7
2  433  99
3  555  99
0 голосов
/ 11 декабря 2018

Попробуйте combine_first:

df2.combine_first(df1)

Вывод:

       B     C
A             
0  300.0   6.0
1  400.0   7.0
2  433.0  99.0
3  555.0  99.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...