Как найти строки со значением по обе стороны от заданного значения?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

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