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

时间:2018-12-04 14:25:52

标签: python pandas days period

我有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']

但结果不正确。

2 个答案:

答案 0 :(得分:1)

函数[routerLink]="['/user/', <your param 1>, '/edit/', <your param 2>]"添加由resample填充的所有缺失日期。

您只能在DataFrame.dropna之前删除这些天:

NaN

答案 1 :(得分:1)

pandas.groupbydt.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