首页 > 解决方案 > 有没有办法在保持比率的同时插入值?

问题描述

我有一个百分比数据框,我想插入中间值

    0    5  10  15  20  25  30  35                                                                   
A     0.50  0.50  0.50  0.49  0.47  0.41  0.35  0.29  0.22   
B    0.31  0.31  0.31  0.29  0.28  0.24  0.22  0.18  0.13  
C     0.09  0.09  0.09  0.09  0.08  0.07  0.06  0.05  0.04 
D    0.08  0.08  0.08  0.08  0.06  0.06  0.05  0.04  0.03
E     0.01  0.01  0.01  0.01  0.01  0.02  0.02  0.03  0.04 
F    0.01  0.01  0.01  0.04  0.10  0.20  0.30  0.41  0.54 

到目前为止,我一直在使用 scipy 的 interp1d 并逐行迭代,但它并不总是在列中保持完美的比率。有没有办法在一个函数中一起完成这一切?

标签: pythonpython-3.xpandasscipy

解决方案


reindex然后interpolate

r = range(df.columns.min(), df.columns.max() + 1)
df.reindex(columns=r).interpolate(axis=1)

     0     1     2     3     4     5     6     7     8     9   ...      31     32     33     34    35     36     37     38     39    40
A  0.50  0.50  0.50  0.50  0.50  0.50  0.50  0.50  0.50  0.50  ...   0.338  0.326  0.314  0.302  0.29  0.276  0.262  0.248  0.234  0.22
B  0.31  0.31  0.31  0.31  0.31  0.31  0.31  0.31  0.31  0.31  ...   0.212  0.204  0.196  0.188  0.18  0.170  0.160  0.150  0.140  0.13
C  0.09  0.09  0.09  0.09  0.09  0.09  0.09  0.09  0.09  0.09  ...   0.058  0.056  0.054  0.052  0.05  0.048  0.046  0.044  0.042  0.04
D  0.08  0.08  0.08  0.08  0.08  0.08  0.08  0.08  0.08  0.08  ...   0.048  0.046  0.044  0.042  0.04  0.038  0.036  0.034  0.032  0.03
E  0.01  0.01  0.01  0.01  0.01  0.01  0.01  0.01  0.01  0.01  ...   0.022  0.024  0.026  0.028  0.03  0.032  0.034  0.036  0.038  0.04
F  0.01  0.01  0.01  0.01  0.01  0.01  0.01  0.01  0.01  0.01  ...   0.322  0.344  0.366  0.388  0.41  0.436  0.462  0.488  0.514  0.54

推荐阅读