我有5分钟间隔的df了很多天。缺少某些行和日期。索引是日期时间格式。
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_diff 创建每日数据的new_df。列Data_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']
但结果不正确。
答案 0 :(得分:1)
函数[routerLink]="['/user/', <your param 1>, '/edit/', <your param 2>]"
添加由resample
填充的所有缺失日期。
您只能在DataFrame.dropna
之前删除这些天:
NaN
答案 1 :(得分:1)
将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