Благодаря ответу на мой первоначальный вопростеперь у меня есть мультииндексированный DataFrame так, как я хочу. Теперь, когда у меня есть данные в структуре данных, я пытаюсь их извлечь и думаю, есть ли лучший способ сделать это. Мои две проблемы связаны, но могут иметь отдельные «идеальные» решения:
Sample DataFrame (усеченный)
Experiment IWWGCW IWWGDW
Lead Time 24 48 24 48
2010-11-27 12:00:00 0.997 0.991 0.998 0.990
2010-11-28 12:00:00 0.998 0.987 0.997 0.990
2010-11-29 12:00:00 0.997 0.992 0.997 0.992
2010-11-30 12:00:00 0.997 0.987 0.997 0.987
2010-12-01 12:00:00 0.996 0.986 0.996 0.986
Итерация
Я хотел бы иметь возможность зацикливаться на этом DataFrame, где итерация приведет меня только к падению. 1 индексное измерение, т.е.поведение iteritems
, которое вернет [('IWWGCW', df['IWWGCW']), ('IWWGDW', df['IWWGDW'])]
и даст 2 фрейма данных с Столбцы времени выполнения. Мое решение грубой силы состоит в том, чтобы использовать процедуру-оболочку, которая в основном выполняет [(key, df[key] for key in df.columns.levels[0]]
. Есть ли лучший способ сделать это?
Применить
Я также хотел бы делать такие вещи, как "вычесть записи IWWGDW из всех остальных", чтобы вычислить парные различия. Я пытался сделать df.apply(lambda f: f - df['IWWGDW '])
, но получаю KeyError: ('IWWGDW', 'произошло по индексу 2010-11-26 12:00:00')
независимо от того, использую ли я ось=1
или axis=0
, Я пытался перестроить новый DataFrame, используя обходной путь итерации, указанный выше, но я всегда беспокоюсь, когда делаю грубую силу. Есть ли более «пандасический» способ сделать это вид вычислений?