对于每天,使用Python从第一个时间行中减去最后一个时间行
我每天有5分钟的休息时间。缺少一些行和天。索引是日期时间格式对于每天,使用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
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