Pandas многоиндексный ряд с несколькими столбцами - PullRequest
0 голосов
/ 04 мая 2020

У меня есть фрейм данных, содержащий некоторые записанные данные с течением времени из источника, data:

   t  min  max ... some_value
 0.0  0.0  0.0 ...        0.0
 5.0  0.0  2.4 ...        1.9
10.0  0.0  6.7 ...        4.6
 ...  ...  ... ...        ...

У меня также есть фрейм данных, содержащий информацию об источнике, source:

type location some_info
   A      loc      info

Теперь я хочу добавить source к data таким образом, чтобы можно было легко получить все данные из выбранного источника, поскольку у меня есть данные из нескольких источников, а также получить доступ к информации об источнике, соответствующей текущие данные. Моя идея состояла в том, чтобы сделать это с помощью мультииндекса таким образом, чтобы у меня было что-то вроде

                           data
                              t  min  max ... some_value
source
  type location some_info
     A      loc      info   0.0  0.0  0.0 ...        0.0
                            5.0  0.0  2.4 ...        1.9
                           10.0  0.0  6.7 ...        4.6
   ...      ...       ...   ...  ...  ... ...        ...

Можно ли это сделать с помощью простой конкатенации? Такое ощущение, что это будет сложнее, чем это.

Если возможно, я хочу иметь возможность перебирать источники в фрейме данных, содержащем данные из нескольких источников, например:

for source in full_frame.index:
    source_data = full_frame[source,:]
    do_something(source_data)

Если этот подход кажется излишне сложным, пожалуйста, дайте мне знать.

РЕДАКТИРОВАТЬ: Обновлен вид требуемого результата

1 Ответ

0 голосов
/ 04 мая 2020

Использование:

result = pd.concat([source, data], axis=1, join='outer', keys=['source', 'data'])

Объединение происходит "по индексу" в обоих фреймах данных.

Я добавил join = 'external' для правильного поведения, если один В DataFrame есть строка для некоторого значения индекса, а во втором DataFrame - нет.

...