【发布时间】: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')
但是,当我想在特定时间比较两个不同文件的值时,会出现几个问题:
- 文件中的时间不完全匹配。一个文件可能是 01:443 秒,另一个文件可能是 01:247。
- 四舍五入到一秒或 500 毫秒会导致索引可能被跳过或重复的问题。舍入到 500 毫秒可以舍入 01:443 到 01:500,但可以舍入 01:247 到 01:000。
我尝试了几种方法:
- 将 int64 整数向上舍入
- 向上取整 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
但似乎没有一个工作或为我提供我需要的解决方案,即(大致)同时减去两个值。 解决这个问题的最佳方法是什么?
【问题讨论】: