python - 对于每一天,用 Python 从第一个时间行中减去最后一个时间行
问题描述
我有很多天的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']
但结果不正确。
解决方案
函数添加由sresample
填充的所有缺失天数。NaN
您只能通过以下方式删除这些天DataFrame.dropna
:
new_df = df.resample('D')['Data'].agg(['first','last']).dropna(how='all')
new_df['Data_diff'] = new_df['last'] - new_df['first']
print (new_df)
first last Data_diff
DateTime
2016-01-01 1.0 3.0 2.0
2016-03-25 4.0 7.0 3.0
2017-11-09 8.0 13.0 5.0
推荐阅读
- python - pytest 在测试方法中插入 caplog 夹具
- gmail-api - 管理委派设置
- c++ - 强制隐式类模板实例化包括所有定义
- python - 在未运行的模块中使用来自另一个 Python 文件和函数的变量?
- reactjs - react-datepicker 将初始日期设置为 01-01-1970
- c++ - 如何在 C++ 中检查有效的用户输入
- .net - SQL 存储过程查询以清除日期字段(如果为 NULL)
- azure-cosmosdb - TinkerPop / CosmosDB 中的命令式匹配
- powershell - Powershell脚本不一致的行为
- node.js - 无法安装 node-sass --save-dev / npm ERR!网络