Объединение фреймов данных Pandas с правилом

#pandas #dataframe #join #merge #concatenation

#pandas #фрейм данных #Присоединиться #слияние #конкатенация

Вопрос:

Я пытаюсь объединить два фрейма данных с общими индексами строк и столбцов, однако я ожидаю, что записи с аналогичными индексами строк и столбцов будут существовать в обоих фреймах данных.

Есть ли способ создать правило для сохранения записей в df1, если они присутствуют, но если значения нет, то использовать значение в df2?

итак, df3 = некоторая операция над df1,df21

Пример:

   df1 = [[[a],[b],[c]],
         [[ ],[e],[ ]],
         [[g],[h],[i]]]

  df2 = [[[ ],[ ],[ ]],
         [[d],[x],[f]],
         [[y],[z],[z]]]

  df3 = [[[a],[b],[c]],
         [[d],[e],[f]],
         [[g],[h],[i]]]
  

Комментарии:

1. Пожалуйста, приведите надлежащие примеры ввода и ожидаемого результата.

2. df3 = df1.combine_first(df2) ?

3. @ChrisA спасибо, это именно то, что я искал!

Ответ №1:

Я думаю, вы ищете pandas df.fillna()::

 d1 = [['a','b','c'],[None,'e',None],['g','h','i']] 
d2 = [[None,None,None],['d','x','f'],['y','z','z']]
df1,df2 = pd.DataFrame(d1),pd.DataFrame(d2)

df1.fillna(df2)


   0  1  2
0  a  b  c
1  d  e  f
2  g  h  i
  

Ответ №2:

Вы также можете использовать это:

 df1[df1.isnull()] = df2.values