Выполнять операции над разными строками в мультииндексном DataFrame

1

Учитывая, что у меня есть следующий многокадровый DataFrame

                     date_a        date_b
index_a   index_b               
1          Foo     1/2/2018     1/1/2018
           Bar     1/3/2018     12/20/2017  
2          Foo     2/4/2018     3/6/2018
           Bar     2/2/2017     1/2/2017

Как создать серию, которая получает разницу date_a от Foo и date_b от бара, индексированного index_a

index_a   difference_of_a_and_b     
1          1:00:00  
2          2:00:00

Я нашел способ сделать это по каждому индексу:

df.loc[1,'Foo']['date_a'] - df.loc[1,'Bar']['date_b'] 

Теперь, как это сделать ко всем index_a

  • 0
    Как вы хотите, чтобы результат выглядел? Выход будет иметь только две строки.
  • 0
    ряд данных, проиндексированных index_a, что-то вроде: index_a new_column 1 1:00:00 2 2:00:00
Показать ещё 2 комментария
Теги:
pandas
dataframe

1 ответ

1
Лучший ответ

Используйте DataFrame.xs для уровней среза и вычитайте:

(pd.to_datetime(df.xs('Foo', level=1)['date_a']) 
     - pd.to_datetime(df.xs('Bar', level=1)['date_b']))

index_a
1    13 days
2   398 days
dtype: timedelta64[ns]
  • 0
    Именно то, что мне нужно, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню