gpt4 book ai didi

python - Pandas 检测过日日期

转载 作者:行者123 更新时间:2023-12-04 07:47:00 24 4
gpt4 key购买 nike

我有一个看起来像这样的数据:

<表类="s-表"><头>时间数据<正文>13:45:00数据 113:45:03数据 213:45:14数据 313:45:22数据 413:45:24数据 500:00:03数据 600:00:26数据 7

数据有超过一天的数据,但它只包含时间但没有日期,我必须手动为数据框分配一个新列并将其与时间结合使用的日期

df['DateTime'] = df['Date'].astype('str') + " "  + df['Time'].astype('str')

但是这种方法只能指定一天,我希望程序可以在凌晨 12 点之后自动将日期添加 1 天。另外,你可以看到从13:45:00到13:45:03,中间有3秒的时间间隔,我想把每个时间间隔都填满,能够显示每一秒的数据

期望的输出:

<表类="s-表"><头>日期时间数据<正文>2021/4/19 13:45:00数据 12021/4/19 13:45:01数据 12021/4/19 13:45:02数据 12021/4/19 13:45:03数据 22021/4/19 13:45:04数据 2......2021/4/20 00:00:01数据 52021/4/20 00:00:02数据 52021/4/20 00:00:03数据 62021/4/20 00:00:04数据 6

我已经尝试过重采样函数来完成这项工作,但是重采样总是会在重采样数据之前进行排序,结果 00:00:03 行将位于第一行(00:00:03 应该用于第二天但函数错误地将它们编译为一天)。有没有办法让 pandas 识别这个数据集包含一天的数据,并在超过凌晨 12 点时自动在日期前加一天?

最佳答案

试试这个:

idx = pd.to_datetime("2021/04/19 " + df["Time"]) + pd.to_timedelta(
pd.to_datetime(df["Time"]).diff().lt(pd.Timedelta(seconds=0)).cumsum(), unit="days"
)

dfi = df.set_index(idx)
dfi.resample("S").ffill()

输出:

                         Time    Data
Time
2021-04-19 13:45:00 13:45:00 Data 1
2021-04-19 13:45:01 13:45:00 Data 1
2021-04-19 13:45:02 13:45:00 Data 1
2021-04-19 13:45:03 13:45:03 Data 2
2021-04-19 13:45:04 13:45:03 Data 2
... ... ...
2021-04-20 00:00:22 00:00:03 Data 6
2021-04-20 00:00:23 00:00:03 Data 6
2021-04-20 00:00:24 00:00:03 Data 6
2021-04-20 00:00:25 00:00:03 Data 6
2021-04-20 00:00:26 00:00:26 Data 7

[36927 rows x 2 columns]

关于python - Pandas 检测过日日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67155315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com