python - 当并非所有行都包含结束日期时,对数据框中的开始日期和结束日期进行数学运算
问题描述
我是一个使用 Python 查询 SQL 数据库、将结果解析为一系列数据框并将结果输出到 Excel 工作表(xlsxwriter)的大菜鸟,并在 Python 代码中执行了一些计算,但我遇到了问题一种操纵。我需要找到具有相同标识符的行之间的日期差异,但并非每个标识符都对应于开始日期和结束日期。我有看起来像这样的数据,例如:
ID date other stuff
1 1/01/2018 xxxxxx
2 1/04/2018 xxxxxx
2 1/08/2018 yyyyyy
3 1/14/2018 xxxxxx
4 2/01/2018 xxxxxx
4 2/04/2018 yyyyyy
我希望结果位于一个新的数据框中,该数据框输出到同一个 Excel 文件中的单独工作表中。
解决方案
尝试使用groupby
:
df['diff days'] = df.groupby('ID')['date'].diff()
输出:
ID date other stuff diff days
0 1 2018-01-01 xxxxxx NaN NaT
1 2 2018-01-04 xxxxxx NaN NaT
2 2 2018-01-08 yyyyyy NaN 4 days
3 3 2018-01-14 xxxxxx NaN NaT
4 4 2018-02-01 xxxxxx NaN NaT
5 4 2018-02-04 yyyyyy NaN 3 days
推荐阅读
- django-rest-framework - 为什么在使用自定义`create`方法时仍然将无效数据保存到数据库?
- azure - 如何在 Azure 搜索建议中制作语言过滤器?
- c++ - 测试两个类型列表中的所有组合
- ruby-on-rails - WebSocket握手期间的Rails 5错误:意外的响应代码:502
- mysql - Google Cloud SQL - 捕获错误登录
- javascript - 当我使用 context.rotate 时,画布旋转 180 度而不是 90 度
- r - 计算 r 中日期的差异
- ios - 实现可折叠 TableView 时未调用 UITableView didSelectRowAtIndexPath
- python - 单射的reduce函数的例子?
- python - 在 SciPy 中使用 optimize.newton 时,如何手动处理分歧失败?