У меня есть несколько CSV-файлов с метками времени Unix, которые я использую в качестве 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')
Однако есть несколько проблем, когда я хочу сравнить значения двух разных файлов в определенное время:
- Время в файлах не совпадает точно.Это может быть 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
Но ни один из них, похоже, не работает и не предоставляет мне решение, которое мне нужно, а именно вычитание двух значений (примерно) в одно и то же время.Как лучше всего подойти к этому?