python - 创建新行并根据时间间隔重复这些值(如果它们属于)

标签 python pandas datetime rows repeat

我有一个包含许多列的 Pandas 数据框。其中两个是时间戳( startend )。


       start                 end             value  string
    2021-12-01 14:00:00     2021-12-01 14:35:00     1   a
    2021-12-01 17:00:00     2021-12-01 17:30:00     2   b
    2021-12-01 14:00:00     2021-12-01 16:00:00     3   c

我需要将时间戳标记(下面的 time 列)标准化为 5 到 5 分钟,重复其他列 value 中的值和string属于同一时间间隔,如下所示:

 

           time                  start               end             value  string
    2021-12-01 14:00:00     2021-12-01 14:00:00     2021-12-01 14:35:00     1   a
    2021-12-01 14:05:00     2021-12-01 14:00:00     2021-12-01 14:35:00     1   a
    2021-12-01 14:10:00     2021-12-01 14:00:00     2021-12-01 14:35:00     1   a
    2021-12-01 14:15:00     2021-12-01 14:00:00     2021-12-01 14:35:00     1   a
    2021-12-01 14:20:00     2021-12-01 14:00:00     2021-12-01 14:35:00     1   a
    2021-12-01 14:25:00     2021-12-01 14:00:00     2021-12-01 14:35:00     1   a
    2021-12-01 14:30:00     2021-12-01 14:00:00     2021-12-01 14:35:00     1   a
    2021-12-01 17:00:00     2021-12-01 17:00:00     2021-12-01 17:30:00     2   b
    2021-12-01 17:05:00     2021-12-01 17:00:00     2021-12-01 17:30:00     2   b

....

时间间隔有很多交集,所以我无法使用 df.resampleDatetimeIndex .

最佳答案

您可以使用 pd.date_range 为每行创建一个日期范围,然后分解它们:

new_df = df.assign(time=df.apply(lambda x: pd.date_range(x['start'], x['end'], freq='5min'), axis=1)).explode('time').reset_index(drop=True)

输出:

>>> new
                 start                 end  value string                time
0  2021-12-01 14:00:00 2021-12-01 14:35:00      1      a 2021-12-01 14:00:00
1  2021-12-01 14:00:00 2021-12-01 14:35:00      1      a 2021-12-01 14:05:00
2  2021-12-01 14:00:00 2021-12-01 14:35:00      1      a 2021-12-01 14:10:00
3  2021-12-01 14:00:00 2021-12-01 14:35:00      1      a 2021-12-01 14:15:00
4  2021-12-01 14:00:00 2021-12-01 14:35:00      1      a 2021-12-01 14:20:00
5  2021-12-01 14:00:00 2021-12-01 14:35:00      1      a 2021-12-01 14:25:00
6  2021-12-01 14:00:00 2021-12-01 14:35:00      1      a 2021-12-01 14:30:00
7  2021-12-01 14:00:00 2021-12-01 14:35:00      1      a 2021-12-01 14:35:00
8  2021-12-01 17:00:00 2021-12-01 17:30:00      2      b 2021-12-01 17:00:00
9  2021-12-01 17:00:00 2021-12-01 17:30:00      2      b 2021-12-01 17:05:00
...

关于python - 创建新行并根据时间间隔重复这些值(如果它们属于),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70443158/

相关文章:

Python glob,os,相对路径,将文件名制作成列表

python MPI sendrecv() 传递 python 对象

python - 通过插入单个数字获得最大可能数字的高效算法

python - 如何将列单元格相乘并在没有数字的情况下添加 NaN?

sql - 如何从今天获得 30 天

python - 无法通过pyrebase从firebase下载文件

python - 如何根据具有相同列但顺序不同的另一个数据框对列重新排序

python - 如何按行压缩两个元组列表?

javascript - 使用 MomentJS 将时区特定时间转换为 UTC

java - 如何通过循环小时来返回时间对象列表