【发布时间】:2021-11-30 01:39:04
【问题描述】:
我的代码:
import pandas as pd
import numpy as np
from scipy.interpolate import interp1d
def interpolate_iv_my(x,y,newX_Value):
y_interp = interp1d(x,y)
iv = y_interp(newX_Value)
return iv
import pandas as pd
df = pd.DataFrame({'30': [-23, 12, -12, 10, -23, 12, -32, 15, -20, 10],
'40': [-30, 20, -21, 15, -33, 22, -40, 25, -22, 12],
'50': [-40, 25, -26, 19, -39, 32, -45, 35, -32, 18],
'60': [-45, 34, -29, 25, -53, 67, -55, 45, -42, 19],
})
x = [30,40,50,60]
df['x_'] = np.random.choice([35,33,42,52],10).tolist()
数据框的图片:
- 我正在尝试获取具有对应插值的新列 到“x_”列中的值。例如对于第一行 x 值 52
插值将是
y = [-23,-30,-40,-45]
interpolate_iv_my(x,y,52)
which gives me -41.0
对所有行执行此操作的最佳方法是什么(我的数据框有超过 50k 行)?
已编辑
好的想出了这个不知道这是否是最好的解决方案
iter_list = []
for l,r in df.iterrows():
y = []
y.append(r['30'])
y.append(r['40'])
y.append(r['50'])
y.append(r['60'])
iter_list.append(interpolate_iv_my(x,y,r['x_']).tolist())
df ['interpolated'] = iter_list
【问题讨论】:
标签: python dataframe interpolation