Объединение двух фреймов данных panda с одинаковыми столбцами и объединение строк с одинаковым индексом - PullRequest
1 голос
/ 07 августа 2020

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

>>> df1= TimeStamp A_Output B_Output C_Output
          00:00:00  20       15       5
          00:00:06  20       NaN      3
          00:00:15  15       6      NaN
          00:00:20  20       NaN      5
          00:00:30  25       14      10


 >>> df2= TimeStamp A_Output B_Output C_Output
          00:00:00  15       5        8
          00:00:04  16       NaN      NaN
          00:00:06  17       NaN      NaN
          00:00:15  NaN      NaN      2
          00:00:18  19       NaN      NaN
          00:00:21  14       NaN      NaN
          00:00:26  32       NaN      5
          

 >>> df3= TimeStamp A_Output B_Output C_Output
          00:00:00  15       5        8
          00:00:04  16       NaN      NaN
          00:00:06  17       NaN      3
          00:00:15  15       6        2
          00:00:18  19       NaN      NaN
          00:00:21  14       NaN      NaN
          00:00:26  32       NaN      5
          00:00:30  25       14      10

df3 - это то, чего я хотел бы достичь. Здесь есть временная метка для каждого индекса в df1 и df2 . Для каждого общего индекса, где db2 не является NaN, мы берем значения, в противном случае мы сохраняем те, которые хранятся в df1 .

df1 >>> 00:00:15  15        6     NaN
df2 >>> 00:00:15  NaN      NaN     2
df3 >>> 00:00:15  15        6      2

df1 >>> 00:00:00  20        15     5
df2 >>> 00:00:00  15         5     8
df3 >>> 00:00:00  15         5     8

Для пояснения см. Приведенные выше примеры. Я действительно не могу найти способ сделать это - для справки, каждый фрейм данных имеет около 90 столбцов и более 100 тыс. Строк.

1 Ответ

2 голосов
/ 07 августа 2020

Сначала попробуйте объединить:

df3 = df2.combine_first(df1)

print(df3)

           A_Output  B_Output  C_Output
TimeStamp                              
00:00:00       15.0       5.0       8.0
00:00:04       16.0       NaN       NaN
00:00:06       17.0       NaN       3.0
00:00:15       15.0       6.0       2.0
00:00:18       19.0       NaN       NaN
00:00:20       20.0       NaN       5.0
00:00:21       14.0       NaN       NaN
00:00:26       32.0       NaN       5.0
00:00:30       25.0      14.0      10.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...