【发布时间】:2021-02-09 22:08:23
【问题描述】:
我有一个包含几百万行的DataFrame,每一行都类似于以下内容:
2017-06-13 NaT NaT NaT NaT NaT NaT 2017-10-28
2017-10-02 NaT NaT NaT NaT NaT NaT 2017-10-28
2017-10-30 2017-10-31 NaT 2017-10-31 2017-11-01 2017-11-02 2017-11-03 2017-11-03
2017-10-30 2017-10-30 NaT 2017-10-30 NaT 2017-10-30 2017-11-01 2017-11-01
2017-10-02 NaT NaT NaT NaT NaT NaT 2017-10-28
每一列都是一个过程中的一个步骤,我试图找出从一个步骤到另一个步骤所需的时间。 NaT 值表示已跳过该步骤,因此我想在计算中跳过它并计算下一个(非 NaT)步骤的时间。
在此示例中,对于第一行和第二行,我正在寻找最后一列和第一列之间的差异。对于第三行,我正在寻找第一列和第二列、第四列和第二列、第五列和第四列等之间的差异。预期的输出类似于以下内容(如果我们使用天数):
NaT 0 0 0 0 0 0 137
NaT 0 0 0 0 0 0 111
NaT 1 0 0 1 1 1 0
NaT 0 0 0 0 0 2 0
NaT 0 0 0 0 0 0 26
我确信有一种方法可以使用 for 循环和 if 语句并减去日期,但我希望有一种更加矢量化的方法,因为 DataFrame 相当大。
【问题讨论】:
-
请不要发布您的数据图片,而是实际可复制的数据,例如您对预期输出所做的操作。以这种方式很难重现您的问题并找到解决方案。