汇总并比较索引

2024-10-01 04:44:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个带有unix时间戳的csv文件,用作datetimeindex,我想比较一下

单个文件的示例:

Unixtime           Value     
1525328729150.00   15.06
1525328729943.00   16.05
1525328730741.00   16.32
1525328731536.00   16.35
1525328732335.00   16.87
1525328733131.00   16.99
1525328733932.00   17.45
1525328734731.00   17.65

目前,我正在使用以下(代码段)设置DatetimeIndex(工作正常):

data[i] = pd.read_csv(temp_file_name, index_col=' Time_Created')
data[i].index = pd.to_datetime(data[i].index, unit='ns')

但是,当我想在特定时间比较两个不同文件的值时,有几个问题:

  1. 档案里的时间不完全吻合。一个文件可能是01:443秒,另一个是01:247秒
  2. 舍入到一秒或500毫秒会导致索引可能被跳过或复制的问题。舍入到500ms可以舍入01:443到01:500,但是可以舍入01:247到01:000

我试过几种方法:

  1. 将int64整数取整
  2. 取整DatetimeIndex

到目前为止,我们尝试使用

np.round(data[i].index.astype(np.int64), -13).astype('datetime64[ns]')

或者

pd.DatetimeIndex(((data[i].index.asi8/(1e13*60)).round()*1e13*60)
.astype(np.int64)).values

或者

ns1min=1*60*1000000000   # 1 minute in nanoseconds 
pd.to_datetime(((data[i].index.astype(np.int64) // ns1min + 1 ) * ns1min))

或者

pandas.DatetimeIndex.round

但似乎没有一个能起作用,也没有一个能为我提供我需要的解决方案,那就是两个值(大致)同时相减。 最好的方法是什么


Tags: 文件csvtodatadatetimeindexnp时间
1条回答
网友
1楼 · 发布于 2024-10-01 04:44:35

我试着用

round_amount = 1*1*1000000000
data[i].index = pd.DatetimeIndex(((data[i].index.asi8/(round_amount)).round()*round_amount).astype(np.int64))

它将DatetimeIndex舍入到最接近的秒

相关问题 更多 >