python - 处理来自多个熊猫数据帧的数据时的插值方法?
问题描述
我有一个包含许多列的 DataFrame,我想使用 x、y 点和我已知的 x 值进行插值以获取 y 值。我知道如何通过选择 x、y 点和 x 值的一列(每个 DataFrame 的)来执行插值。我的目标是拥有一个包含所有插值 y 值的 DataFrame。通常,我可以通过以下两种方式之一获得 y 值(据我所知):
以下是我的 DataFrame 的格式示例:
random.seed( 30 )
df_x_pts = pd.DataFrame({
"x_pts_1": np.random.uniform(low=1, high=200, size=(10,)),
"x_pts_2": np.random.uniform(low=1, high=500, size=(10,)),
"x_pts_3": np.random.uniform(low=1, high=750, size=(10,)),})
df_y_pts = pd.DataFrame({
"y_pts_1": np.random.uniform(low=1, high=200, size=(10,)),
"y_pts_2": np.random.uniform(low=1, high=500, size=(10,)),
"y_pts_3": np.random.uniform(low=1, high=750, size=(10,)),})
df_x_vals = pd.DataFrame({
"x_vals_1": np.random.uniform(low=1, high=200, size=(50,)),
"x_vals_2": np.random.uniform(low=1, high=500, size=(50,)),
"x_vals_3": np.random.uniform(low=1, high=750, size=(50,)),})
1) 我可以使用 scipy 为每个 DataFrame 中的每一列计算:
import pandas as pd
import numpy as np
from scipy.interpolate import interp1d
y = df_y_pts["y_pts_1"]
x = df_x_pts["x_pts_1"]
# Fit the interpolation on the original index and values
f = interp1d(x, y, kind='linear')
# Perform interpolation for values across the full desired index
f(x_val)
2)或使用numpy:
x_pts = df_x_pts["x_pts_1"]
y_pts = df_y_pts["y_pts_1"]
x_vals = df_x_vals["x_vals_1"]
y_vals = np.interp(x_vals, x_pts, y_pts)
print(y_vals)
什么是在所有 DataFrame 中完成此操作的明智方法,以便我返回一个看起来像 df_x_vals 的单个 DataFrame,除了一个包含所有插值 y 值的 DataFrame?任何帮助是极大的赞赏!
解决方案
聚会有点晚了,没有足够的代表发表评论,所以我把这个作为答案:
你如何使用它在列之间插入值,而不是向下插入行?
检查 的axis
论点DataFrame.Interpolate
,我相信这就是你想要的。
基本上...interpolate(..., axis=1)
推荐阅读
- c - 带有三元运算符的 C void 指针
- azure-logic-apps - 使用逻辑应用将从 Log Analytics 收集的数据传输到 Blob 存储帐户
- javascript - 将类删除到元素 jquery 的同级
- gitlab-ci - gitlab-ci 作业未运行脚本
- android - java.lang.OutOfMemoryError:无法分配 267911176 字节分配,4194304 可用字节和 125MB 直到 OOM
- java - Spring 无法从 DataTables 中获取 draw、start 和 length
- audio - 混合音频和视频时的ffmpeg同步问题
- 2d - Godot 使项目跟随鼠标
- python - 如何将张量对象放在同一个图中?
- python-3.x - 将具有关系数据的熊猫数据框转换为概率链接的最有效方法