我试图在多索引数据框中找到两个日期之间的差异,这是数据透视表操作的结果。
数据框包含三列。第一个是measurement
,第二个是end date
,第三个是start date
。
我已经能够成功地向数据框添加第三个多索引列,但只能使得到达单元格零的结果
Pt [" min"] [" start_date"] = 0但是当我尝试减去这两个日期时,我收到一个字符串错误并将.Dt.Days
追加到最后每列的结果也会导致错误。
在多索引pandas数据框中找到两个日期之间的天数差异的最简单方法是什么?
答案 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