Объединить три кадра данных

Я новичок в pandas dataframe и у меня следующий вопрос.

У меня есть 3 кадра данных, полученные при чтении файлов CSV:

  • DataFrame 1 назван pdDop и имеет следующие записи:

    DOP_WNC   DOP_TOW  DOP_NRSVS  DOP_PDOP  DOP_VDOP  DOP_HDOP  DOP_TDOP
    
    1928  424800.0          4      5.81      5.36      2.24      2.72
    
    1928  424801.0          4      5.81      5.36      2.24      2.72
    
    1928  424802.0          4      5.80      5.35      2.24      2.72
    
    1928  424803.0          4      5.80      5.35      2.24      2.72
    
    1928  424804.0          4      5.80      5.35      2.24      2.72
    
    1928  424805.0          4      5.80      5.35      2.24      2.72
    
  • DataFrame 2 назван pdGeod и имеет следующие записи:

    GEOD_TOW  GEOD_MODE  GEOD_2D/3D  GEOD_Error  GEOD_NrSV  GEOD_Latitude  GEOD_Longitude  GEOD_Height
    
    424800.0          1           0           0          4         0.8874          0.0767     150.4975
    
    424801.0          1           0           0          4         0.8874          0.0767     150.5277
    
    424802.0          1           0           0          4         0.8874          0.0767     150.5579
    
    424803.0          1           0           0          4         0.8874          0.0767     150.5931
    
    424804.0          1           0           0          4         0.8874          0.0767     150.6214
    
  • Dataframe 3 называется pdSatVis и имеет следующие записи:

    VISIBILITY_TOW  VISIBILITY_SVID  VISIBILITY_AZIMUTH  VISIBILITY_ELEVATION
    
    426175.0               92               54.50                 35.43
    
    426175.0              100              108.22                 26.00
    
    426175.0               88               49.29                 10.48
    
    426175.0               89              278.29                 17.39
    
    426176.0               92               54.50                 35.43
    
    426176.0              100              108.22                 26.00
    
    426176.0               88               49.29                 10.48
    
    426176.0               89              278.29                 17.39
    
    426177.0               92               54.48                 35.42
    
    426177.0              100              108.23                 25.98
    
    426177.0               88               49.28                 10.45
    
    426177.0               89              278.27                 17.38
    
    426178.0               92               54.48                 35.42
    

Я хотел бы создать 1 кадр данных, который объединяет на основе *_TOW (Время недели) столбец, который находится в каждом кадре данных. Обратите внимание, что последний фрейм данных pdSatVis имеет несколько строк с VISIBILTY_TOW значение, которое соответствует только 1 строке в обоих pdDop а также pdGeod,

1 ответ

Вы можете добавить новый столбец для объединения:

pdDop['TOW'] = pdDop['DOP_TOW']
pdGeod['TOW'] = pdGeod['GEOD_TOW']
pdSatVis['TOW'] = pdSatVis['VISIBILITY_TOW']
pd.merge(pd.merge(pdDop, pdGeod, how='outer'), pdSatVis, how='outer')

или предоставьте столбцы для слияния явно:

m1 = pd.merge(pdDop, pdGeod, how='outer', left_on='DOP_TOW', right_on='GEOD_TOW')
pd.merge(m1, pdSatVis, how='outer', left_on='DOP_TOW', right_on='VISIBILITY_TOW')
Другие вопросы по тегам