Интерполяция переменной для разных высот (автоматически определяет x1 и x2) - PullRequest
0 голосов
/ 31 января 2019

У меня есть фрейм данных с 3 столбцами значений температуры, как показано ниже:

T1 at 1000 m
T2 at 2000 m
T3 at 3000m

И у меня есть список с разными отметками в диапазоне от 1000 до 3000. Для каждой отметки я хочу создать интерполированную температуру.Основная проблема заключается в том, что я не могу заставить свой код автоматически выбирать правильные столбцы.Например, если моя целевая высота 1500, я хочу интерполировать между 1000 и 2000. Я стремлюсь к простой линейной интерполяции.Я попробовал метод, который предлагается в Pandas: создать новый столбец путем линейной интерполяции между существующими столбцами Но я продолжал получать TypeError: объект 'zip' не подходит для подписки

Можете ли вы помочь мне решитьэто проблема?

import pandas as pd
import numpy as np
from datetime import datetime, timedelta

date_today = datetime.now()
days = pd.date_range(date_today, date_today + timedelta(7), freq='D')
data = np.random.randint(1, high=50, size=len(days))
Elevation= np.random.randint(1000, high=3000, size=len(days))

df = pd.DataFrame({'Time': days, 'T1000':data,'T2000':data,'T3000':data} )
df = df.set_index('Time')
print(df)

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете просто интерполировать для каждой строки кадра данных:

df['Alti'] = Elevation
df['Val'] = df.apply(lambda x: np.interp(x.Alti, [1000, 2000, 3000], x['T1000':'T3000']),
                     axis=1)
...