pandas 数据帧中的时间序列

Time sequence in pandas dataframe

下面是dataframe (df)的样本:-

alpha value
0 a 5
1 a 8
2 a 4
3 b 2
4 b 1

我知道如何按照组来制作序列(数字):

df["serial"] = df.groupby("alpha").cumcount()+1
alpha value serial
0 a 5 1
1 a 8 2
2 a 4 3
3 b 2 1
4 b 1 2

但是我需要间隔 30 分钟的日期时间序列而不是数字:

预期结果:

alpha value serial
0 a 5 2021-01-01 23:30:00
1 a 8 2021-01-02 00:00:00
2 a 4 2021-01-02 00:30:00
3 b 2 2021-01-01 23:30:00
4 b 1 2021-01-02 00:00:00

您可以简单地将结果乘以 pd.Timedelta:

print ((df.groupby("alpha").cumcount()+1)*pd.Timedelta(minutes=30)+pd.Timestamp("2021-01-01 23:00:00"))

0   2021-01-01 23:30:00
1   2021-01-02 00:00:00
2   2021-01-02 00:30:00
3   2021-01-01 23:30:00
4   2021-01-02 00:00:00
dtype: datetime64[ns]

尝试 to_datetimegroupby cumcount,然后乘以 pd.Timedelta 30 分钟:

>>> df['serial'] = pd.to_datetime('2021-01-01 23:30:00') + df.groupby('alpha').cumcount() * pd.Timedelta(minutes=30)
>>> df
  alpha  value              serial
0     a      5 2021-01-01 23:30:00
1     a      8 2021-01-02 00:00:00
2     a      4 2021-01-02 00:30:00
3     b      2 2021-01-01 23:30:00
4     b      1 2021-01-02 00:00:00
>>>