汇总并比较索引Python

时间:2018-05-28 13:07:11

标签: python datetime indexing

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

单个文件的示例:

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。
  3. 我尝试了几种方法:

    1. 舍入int64整数
    2. 整理DatetimeIndex
    3. 到目前为止已尝试使用

      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
      

      但似乎没有任何工作或为我提供我需要的解决方案,即在(大致)同时减去两个值。 什么是最好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

我设法使用

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

将DatetimeIndex四舍五入到最接近的秒。