【问题标题】:Round up and compare indices Python四舍五入并比较索引Python
【发布时间】:2018-05-28 13:07:10
【问题描述】:

我有多个带有 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

目前我正在使用以下 (sn-p) 来设置 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 毫秒会导致索引可能被跳过或重复的问题。舍入到 500 毫秒可以舍入 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

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

【问题讨论】:

    标签: python datetime indexing


    【解决方案1】:

    我设法让它使用

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

    将 DatetimeIndex 舍入到最接近的秒数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 2018-09-14
      • 1970-01-01
      • 2012-08-04
      • 2023-03-26
      相关资源
      最近更新 更多