Mar*_*ius 6 python interpolation pandas reindex
我有一个pd DataFrame,通常采用以下格式:
1 2 3 4
0.1100 0.0000E+00 1.0000E+00 5.0000E+00
0.1323 7.7444E-05 8.7935E-01 1.0452E+00
0.1545 4.3548E-04 7.7209E-01 4.5432E-01
0.1768 1.2130E-03 6.7193E-01 2.6896E-01
0.1990 2.5349E-03 5.7904E-01 1.8439E-01
0.2213 4.5260E-03 4.9407E-01 1.3771E-01
Run Code Online (Sandbox Code Playgroud)
我想要做的是从列表中重新采样列1(索引)值,例如:
indexList = numpy.linspace(0.11, 0.25, 8)
Run Code Online (Sandbox Code Playgroud)
然后我需要从输入DataFrame线性插值第2,3和4列的值(我总是只重新采样/重新索引我的第1列) - 如果需要外推,作为我的最小值/最大值list不一定在我现有的第1列(索引)中.然而,关键点是插值部分.我是python的新手,但我正在考虑使用这样的方法:
不知何故感觉我应该能够使用.interpolate功能,但我无法弄清楚如何.我不能直接使用它 - 它太不准确了,因为在第2-4列中提到的重新索引后的大部分条目都是NaN的; 插值应该在我的初始DataFrame的两个最接近的值内完成.任何好的提示有人吗?(如果我的格式/意图不清楚,请告诉我......)
Ted*_*rou 15
假设列1在索引中,您可以使用原始值和您创建的列表重新索引数据帧,然后使用interpolate填充nan.
df1 = df.reindex(df.index.union(np.linspace(.11,.25,8)))
df1.interpolate('index')
2 3 4
0.1100 0.000000 1.000000 5.000000
0.1300 0.000069 0.891794 1.453094
0.1323 0.000077 0.879350 1.045200
0.1500 0.000363 0.793832 0.574093
0.1545 0.000435 0.772090 0.454320
0.1700 0.000976 0.702472 0.325482
0.1768 0.001213 0.671930 0.268960
0.1900 0.001999 0.616698 0.218675
0.1990 0.002535 0.579040 0.184390
0.2100 0.003517 0.537127 0.161364
0.2213 0.004526 0.494070 0.137710
0.2300 0.004526 0.494070 0.137710
0.2500 0.004526 0.494070 0.137710
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2840 次 |
| 最近记录: |