【发布时间】:2019-06-29 13:03:55
【问题描述】:
假设您有两个 Pandas DataFrame,一个包含 2020 年的数据,另一个包含 2030 年的数据。两个 DataFrame 具有相同的形状、列名,并且只包含数值。为简单起见,我们将按如下方式创建它们:
twenty = pd.DataFrame({'A':[1,1,1], 'B':[3,3,3]})
thirty = pd.DataFrame({'A':[3,3,3], 'B':[7,7,7]})
现在,目标是对这些 DataFrame 中的所有值执行线性插值,以获得 2025 年(或我们选择的任何年份)的新 DataFrame。因此,我们希望在每对值集之间进行插值,例如twenty['A'][0] 和thirty['A'][0]。如果我们在 2025 年的目标年这样做,结果应该是:
twentyfive = pd.DataFrame({'A':[2,2,2],'B':[5,5,5]})
我尝试使用np.interp;但是,据我所知,这实际上是用于对给定(奇异)数组进行插值。我已经解决了这个问题,使用一种更暴力的方法来融合 DataFrame,添加年份列,将它们合并在一起,然后使用插值创建一个新列。它有点凌乱和冗长。
我觉得必须有一种更直接(和优化)的方式来执行这项任务。任何帮助表示赞赏。
【问题讨论】:
标签: python pandas interpolation