当前位置: 代码迷 >> python >> 根据其他列中的出现在 Pandas 中创建新时间戳
  详细解决方案

根据其他列中的出现在 Pandas 中创建新时间戳

热度:59   发布时间:2023-07-16 10:56:16.0

我有一个数据框列,其中包含随机时间戳和 NaT 值:

timestamp             
01-01-2018 13:12:48
NaT
NaT
NaT
04-01-2018 08:15:12
NaT
Nat

我想创建另一个列,一旦时间戳列 (col_A) 中有新的时间戳,它就会从 0 开始计数。 我不介意该列是否是时间戳对象但没有日期(col_B)。 那可能吗?

timestamp            col_A  col_B             
01-01-2018 13:12:48  0      00:00:00
NaT                  1      00:01:00
NaT                  2      00:02:00
NaT                  3      00:03:00
04-01-2018 08:15:12  0      00:00:00
NaT                  1      00:01:00
Nat                  2      00:02:00

这是一个孤岛问题:每次timestamp不为空时,它都会创建一个新的孤岛。 您通常使用某种累积和来解决这些问题。

尝试这个:

islands = df['timestamp'].notnull().cumsum()
df['col_A'] = df.groupby(islands).cumcount()
df['col_B'] = pd.to_timedelta(df['col_A'], unit='minute')
  相关解决方案