对于具有排序、浮点索引和列的 DataFrame,根据 DataFrame 值使用线性插值计算值
For a DataFrame with sorted, float index and columns, calculate a value using linear interpolation, based on a DataFrame values
我正在使用 DataFrame 对索引和列的浮点值进行排序:
9 15
5.0 2 9
8.0 3 1
我想使用此 DataFrame 作为基础来计算给定索引和列组合的值,例如 (6.0, 12),其中 DataFrame 的值将用于插值:
9 12 15
5.0 2 - 9
6.0 (ci) (ri) (ci)
8.0 3 - 1
其中(ri)值是行内插值计算得到的,(ci)值是列内值插值得到的,中间的值就是我们要得到的值。计算顺序是先对相关列进行插值计算行中的所有值,然后对行中的最终值进行插值。
对于上面的示例,计算的值如下:
9 12 15
5.0 2 - 9
6.0 2.33 4.33 6.33
8.0 3 - 1
我们在此示例中寻找的值是 4.33。
我们可以假设条目对将始终落在 DataFrame 索引和列值的范围内,并且它也可能匹配这些值,例如对于 (5.0, 9) return 值应该是 2.
我觉得你可以试试numpy.interp
l=[np.interp(6,df.index, df[x]) for x in df.columns]
np.interp(12,df.columns.astype(int), l)
Out[1140]: 4.333333333333334
我正在使用 DataFrame 对索引和列的浮点值进行排序:
9 15
5.0 2 9
8.0 3 1
我想使用此 DataFrame 作为基础来计算给定索引和列组合的值,例如 (6.0, 12),其中 DataFrame 的值将用于插值:
9 12 15
5.0 2 - 9
6.0 (ci) (ri) (ci)
8.0 3 - 1
其中(ri)值是行内插值计算得到的,(ci)值是列内值插值得到的,中间的值就是我们要得到的值。计算顺序是先对相关列进行插值计算行中的所有值,然后对行中的最终值进行插值。
对于上面的示例,计算的值如下:
9 12 15
5.0 2 - 9
6.0 2.33 4.33 6.33
8.0 3 - 1
我们在此示例中寻找的值是 4.33。
我们可以假设条目对将始终落在 DataFrame 索引和列值的范围内,并且它也可能匹配这些值,例如对于 (5.0, 9) return 值应该是 2.
我觉得你可以试试numpy.interp
l=[np.interp(6,df.index, df[x]) for x in df.columns]
np.interp(12,df.columns.astype(int), l)
Out[1140]: 4.333333333333334