如何舍入到最接近的整分钟而不重复。我拥有的数据在条目之间没有 100% 准确的时间增量。
例如我有
数据1 2023-12-10T20:01:00.58Z
数据2 2023-12-10T20:02:00.58Z
数据3 2023-12-10T20:02:59.62Z
此处四舍五入时,我们得到 20:01、20:02、20:02
那么为什么不四舍五入到最接近的分钟呢?因为可能有这样的时间戳:
20:01:29、20:02:29、20:03:31、20:04:31 这将导致 20:01、20:02、20:04、20:05。
但我希望结果在时间增量上保持一致。
我一直都知道,对于我拥有的一个数据系列,时间戳始终以秒为中心。这意味着,不可能有像第一个例子和第二个例子一样的想法。
玩耍:
import pandas as pd
import plotly.express as px
# Creating a pandas DataFrame
data = {'data1': ['2023-12-10T20:01:00.58Z'],
'data2': ['2023-12-10T20:02:00.58Z'],
'data3': ['2023-12-10T20:02:59.62Z']}
df = pd.DataFrame(data)
# Converting the string columns to datetime
df['data1'] = pd.to_datetime(df['data1'])
df['data2'] = pd.to_datetime(df['data2'])
df['data3'] = pd.to_datetime(df['data3'])
我想要对日期时间字段进行四舍五入,同时保持 1 分钟的增量。
diff
,然后计算 round
和 cumsum
并添加到舍入的第一个值:
delta = df.iloc[0].diff().fillna('0').dt.round(freq='1min').cumsum()
df.iloc[0] = delta.add(df.iat[0, 0].round('1min'))
注意。这是假设值已排序。如果没有,请使用
.sort_values().diff()
代替 .diff()
。
输出:
data1 data2 data3
0 2023-12-10 20:01:00+00:00 2023-12-10 20:02:00+00:00 2023-12-10 20:03:00+00:00