我有一个数据框df
如下:
Datetime Value
2020-03-01 08:00:00 10
2020-03-01 10:00:00 12
2020-03-01 12:00:00 15
2020-03-02 09:00:00 1
2020-03-02 10:00:00 3
2020-03-02 13:00:00 8
2020-03-03 10:00:00 20
2020-03-03 12:00:00 25
2020-03-03 14:00:00 15
我想计算每个日期的第一时间和每个日期的最后时间的值之间的差(忽略一个日期中其他时间的值),因此结果将是:
Datetime Value_Difference
2020-03-01 5
2020-03-02 7
2020-03-03 -5
我一直在使用for循环进行此操作,但是当我有更大的数据时,速度很慢(如预期的那样)。任何帮助将不胜感激。
一种解决方案是确保按时间对数据进行排序,对数据进行分组,然后获取每天的第一个和最后一个值。这是有效的,因为熊猫将在此期间保留顺序groupby
,请参见此处。
df = df.sort_values(by='Datetime').groupby(df['Datetime'].dt.date).agg({'Value': ['first', 'last']})
df['Value_Difference'] = df['Value']['last'] - df['Value']['first']
df = df.drop('Value', axis=1).reset_index()
结果:
Datetime Value_Difference
2020-03-01 5
2020-03-02 7
2020-03-03 -5
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句