Python, Pandas, у меня есть фрейм данных, содержащий даты и значения.
# Create an empty DataFrame with 'timestamp' and 'value' columns
df = pd.DataFrame(columns=['timestamp', 'value'])
df.set_index('timestamp', inplace=True)
Я добавляю данные в этот кадр с течением времени.
В какой-то момент я хочу найти значение по временной метке. Если оно уже есть в df, отлично, его легко найти.
Однако, если время, которое я ищу, находится между двумя существующими значениями, как я могу его быстро найти и интерполировать между эти два значения брекетинга? ChatGPT привел меня к веселой погоне за пустыми словами из-за неверных сравнений.
Вот что я пробовал до сих пор, но не помогло:
# Check if the target timestamp exists in the DataFrame
timestamps = df.index
if target_timestamp in timestamps:
# Exact match found
return df.loc[target_timestamp, 'value']
else:
# Use searchsorted to find the insertion point
pos = timestamps.searchsorted(target_timestamp)
if pos == 0 or pos == len(timestamps) - 1:
raise ValueError("Target timestamp is out of bounds for interpolation")
if target_timestamp > timestamps[pos]:
previous_timestamp = timestamps[pos]
next_timestamp = timestamps[pos + 1]
else:
previous_timestamp = timestamps[pos - 1]
next_timestamp = timestamps[pos]
# Interpolating the value
previous_value = df.loc[previous_timestamp, 'value']
next_value = df.loc[next_timestamp, 'value']
# Linear interpolation formula
interpolated_value = previous_value + (next_value - previous_value) * \
(target_timestamp - previous_timestamp) / (next_timestamp - previous_timestamp)
return interpolated_value
Подробнее здесь: https://stackoverflow.com/questions/787 ... iven-value
Как найти строки со значением по обе стороны от заданного значения? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как уменьшить миниатюру домашней страницы и страницы публикации, если обе стороны одинаковы?
Anonymous » » в форуме Php - 0 Ответы
- 42 Просмотры
-
Последнее сообщение Anonymous
-