【问题标题】:Interpolation of a variable for different elevations (automatically determine x1 and x2)针对不同海拔的变量插值(自动确定 x1 和 x2)
【发布时间】:2019-01-31 15:51:57
【问题描述】:

我有一个包含 3 个温度值列的数据框,如下所示:

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

我有一个列表,海拔高度从 1000 到 3000 不等。 对于每个海拔我想创建插值温度。 主要问题是我无法让我的代码自动选择正确的列。例如,如果我的目标海拔是 1500,我想在 1000 到 2000 之间进行插值。我的目标是简单的线性插值。我尝试了Pandas: Make a new column by linearly interpolating between existing columns中建议的方法 但我不断收到 TypeError: 'zip' object is not subscriptable

你能帮我解决这个问题吗?

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)

【问题讨论】:

  • 你在做什么插值?
  • 请贴一些代码
  • 非常感谢,我很抱歉我提出问题的方式很混乱。我现在更新了。我正在寻找简单的线性插值。

标签: python-3.x pandas function interpolation


【解决方案1】:

您可以简单地对 DataFrame 的每一行进行插值:

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

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 2015-06-04
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多