查找pandas中两个日期之间差异的最简单方法

时间:2016-07-04 20:51:24

标签: python pandas dataframe time-series multi-index

我试图在多索引数据框中找到两个日期之间的差异,这是数据透视表操作的结果。

数据框包含三列。第一个是measurement,第二个是end date,第三个是start date

我已经能够成功地向数据框添加第三个多索引列,但只能使得到达单元格零的结果

Pt [" min"] [" start_date"] = 0但是当我尝试减去这两个日期时,我收到一个字符串错误并将.Dt.Days追加到最后每列的结果也会导致错误。

在多索引pandas数据框中找到两个日期之间的天数差异的最简单方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以在Multiindex列中选择tuples并减去列:

print (df)
     a                        
  meas         end       start
0    7  2015-04-05  2015-04-01
1    8  2015-04-07  2015-04-02
2    9  2015-04-14  2015-04-04

#if dtypes not datetime
df[('a','end')] = pd.to_datetime(df[('a','end')])
df[('a','start')] = pd.to_datetime(df[('a','start')])

df[('a','diff')] = df[('a','end')] - df[('a','start')]

print (df)
     a                              
  meas        end      start    diff
0    7 2015-04-05 2015-04-01  4 days
1    8 2015-04-07 2015-04-02  5 days
2    9 2015-04-14 2015-04-04 10 days

如果需要days输出:

df[('a','diff')] = (df[('a','end')] - df[('a','start')]).dt.days
print (df)
     a                           
  meas        end      start diff
0    7 2015-04-05 2015-04-01    4
1    8 2015-04-07 2015-04-02    5
2    9 2015-04-14 2015-04-04   10