首页 > 解决方案 > 当并非所有行都包含结束日期时,对数据框中的开始日期和结束日期进行数学运算

问题描述

我是一个使用 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 文件中的单独工作表中。

标签: pythonexcelpandas

解决方案


尝试使用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

推荐阅读