Как найти строки со значением по обе стороны от заданного значения?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как найти строки со значением по обе стороны от заданного значения?

Сообщение Anonymous »

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»