[英]Python linear interpolation between rows in pandas dataframe
我有一个 dataframe
data=pd.DataFrame({'data1':[10,20,30], 'data2':[15,25,35], 'data3':[20,30,40], 'data3':[25,35,35]})
我想在行之间进行插值,具体取决于我的输入 n。 这里 n=2
所以我的 new_data 必须包含 n*len(data)
当我尝试 np.linspace 但我得到新长度为 n*len(data)-1
预计会得到
{ 数据1 数据2 数据3 10.0 15.0 25.0 15.0 20.0 30.0 20.0 25.0 35.0 25.0 30.0 35.0 30.0 35.0 35.0 20.0 25.0 30.0}
我想把最后一行作为输入数据集中最后一行和第一行之间的插值
使用 np.interp() 进行插值:
data = pd.DataFrame({
'data1': [10, 20, 30],
'data2': [15, 25, 35],
'data3': [20, 30, 40],
'data4': [25, 35, 35]})
n = 2
df = data.append(data.iloc[0]).reset_index(drop=True) # add first column for interpolation only
x = np.linspace(df.index.min(), df.index.max(), (len(df) - 1) * n + 1) # x axis values to calculate
result = df.apply(lambda c: np.interp(x, df.index, c), axis=0).iloc[:-1] # drop last column
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.