在多索引DataFrame

时间:2018-08-29 23:03:20

标签: python pandas dataframe

鉴于我具有以下MultiIndex 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

如何生成一个序列,该序列从Foo获取date_a与从以index_a索引的Bar获取date_b的差

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

1 个答案:

答案 0 :(得分: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]