对于每天,使用Python从第一个时间行中减去最后一个时间行

对于每天,使用Python从第一个时间行中减去最后一个时间行,python,pandas,days,period,Python,Pandas,Days,Period,我每天有5分钟的休息时间。缺少一些行和天。索引是日期时间格式 DateTime Data 2016-01-01 07:00:00 1 2016-01-01 10:30:00 2 2016-01-01 16:55:00 3 2016-03-25 09:25:00 4 2016-03-25 11:30:00 5 2016-03-25 13:35:00 6 2016-03-25 17:40:00 7 2017-1

我每天有5分钟的休息时间。缺少一些行和天。索引是日期时间格式

DateTime               Data
2016-01-01 07:00:00     1
2016-01-01 10:30:00     2
2016-01-01 16:55:00     3

2016-03-25 09:25:00     4
2016-03-25 11:30:00     5
2016-03-25 13:35:00     6
2016-03-25 17:40:00     7 

2017-11-09 12:00:00     8
2017-11-09 13:05:00     9
2017-11-09 16:10:00    10
2017-11-09 18:15:00    11
2017-11-09 19:20:00    12
2017-11-09 20:25:00    13
我想用列data\u diff创建一个新的daily数据。列数据_diff应包含每天最后一个数据减去第一个数据的结果

预期结果是:

DateTime      Data_diff
2016-01-01    2
2016-03-25    3
2017-11-09    5
我不知道该怎么办。考虑使用

new_df = df.diff()
但是,这一案例并非如此

编辑:我还尝试了以下方法

new_df = df.resample('D')['Data'].agg(['first','last'])
new_df['Data_diff'] = new_df['first'] - new_df['last']

但是结果不正确。

函数
重采样
添加由
NaN
s填充的所有缺失天数

您现在只能通过以下方式删除:


pandas.groupby
dt.day
一起使用,然后应用所需的函数

s = df.groupby(df['DateTime'].dt.day)['Data'].apply(lambda x: x.values[-1]-x.values[0])
print(s)
#           Data
# DateTime
# 1            2
# 9            5
# 25           3
s = df.groupby(df['DateTime'].dt.day)['Data'].apply(lambda x: x.values[-1]-x.values[0])
print(s)
#           Data
# DateTime
# 1            2
# 9            5
# 25           3