gpt4 book ai didi

python - Pandas/Datetime 舍入错误(舍入到 10 秒)

转载 作者:行者123 更新时间:2023-12-01 22:46:04 26 4
gpt4 key购买 nike

我在填充时间戳的 pandas.Series/DataFrame 上使用 round() 函数时遇到问题。

舍入到最接近的 10 秒标记的代码示例:

import pandas as pd

date = pd.DataFrame([pd.to_datetime('2022-03-02 06:46:05'), pd.to_datetime('2022-03-02 06:46:15'), pd.to_datetime('2022-03-02 06:46:25'), pd.to_datetime('2022-03-02 06:46:35'), pd.to_datetime('2022-03-02 06:46:45'), pd.to_datetime('2022-03-02 06:46:55'), pd.to_datetime('2022-03-02 06:47:05'), pd.to_datetime('2022-03-02 06:47:15'), pd.to_datetime('2022-03-02 06:47:25')])

date[1] = date[0].round('10s')

date

OUT:
0 1
0 2022-03-02 06:46:05 2022-03-02 06:46:00
1 2022-03-02 06:46:15 2022-03-02 06:46:20
2 2022-03-02 06:46:25 2022-03-02 06:46:20
3 2022-03-02 06:46:35 2022-03-02 06:46:40
4 2022-03-02 06:46:45 2022-03-02 06:46:40
5 2022-03-02 06:46:55 2022-03-02 06:47:00
6 2022-03-02 06:47:05 2022-03-02 06:47:00
7 2022-03-02 06:47:15 2022-03-02 06:47:20
8 2022-03-02 06:47:25 2022-03-02 06:47:20
dtype: datetime64[ns]

只要时间戳的秒值在 [5, 25, 45] 中,四舍五入的值就会设置为 [0, 20, 40],尽管它应该设置为 [10, 30, 50]。知道如何解决这个问题吗?

提前致谢!

最佳答案

使用技巧 - 添加一些小的 timedelta,因为 python 应该四舍五入 5 not like expected :

date[1] = date[0].add(pd.Timedelta('1us')).round('10s')
print (date)
0 1
0 2022-03-02 06:46:05 2022-03-02 06:46:10
1 2022-03-02 06:46:15 2022-03-02 06:46:20
2 2022-03-02 06:46:25 2022-03-02 06:46:30
3 2022-03-02 06:46:35 2022-03-02 06:46:40
4 2022-03-02 06:46:45 2022-03-02 06:46:50
5 2022-03-02 06:46:55 2022-03-02 06:47:00
6 2022-03-02 06:47:05 2022-03-02 06:47:10
7 2022-03-02 06:47:15 2022-03-02 06:47:20
8 2022-03-02 06:47:25 2022-03-02 06:47:30

关于python - Pandas/Datetime 舍入错误(舍入到 10 秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75473516/

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