简体   繁体   中英

How to add interpolated values in multiple rows of a pandas dataframe?

I have a csv file that looks like as shown in the picture. There are multiple rows like this whose values are zero in between. So in this row, i want an interpolated value of the upper and lower row. I used df.interpolate(method ='linear', limit_direction ='forward') to interpolate. However, the zero values are not treated as NaN values so it didnt work for me. 在此处输入图像描述

First replace all the zeros with np.nan and then the interpolate will work correctly:

import pandas as pd
import numpy as np

data = [
    [7260,-4.458639405975710,-4.,7.E-08,0.1393070275997700,0.,-0.11144176562682400],
    [8030,-4.452569075111660,-4.,4.E-08,0.1347428577024860,-0.1001462206643270,-0.04915374942019220],
    [498,-4.450785570790800,-4.437233532812810,1.E-07,0.1577349354100960,-0.1628636478696300,-0.05505793797144350],
    [1500,-4.450303023388150,-4.429207978066990,1.E-07,0.1219543073754720,-0.1886731968341070,-0.14408112469719300],
    [6600,-4.462030024237730,-4.4286701710604900,4.E-08,0.100803412848051,-0.1840333872203410,-0.18430271378600200],
    [8860,0.0,0.0,0.0,0.0,0.0,0.0],
    [530,-4.453994378096950,-4.0037494206318200,-9.E-08,0.0594973737919224,1.0356594366090900,-0.03173366589936420],
    [6904,-4.449221525263950,-3.1840342819501800,-2.E-07,0.0918042463623589,1.5125956674286500,-0.01150704151230230],
    [7700,-4.454965896625150,-3.041102261967650,-1.E-07,0.1211292098853800,1.837772463779190,0.0680406376006960],
    [6463,-4.4524324374160600,-3.1096025723730000,-4.E-08,0.1920291560629040,2.062490856824510,0.10665282217392200],
]   
        
df = pd.DataFrame(data, columns=range(98, 105)) \
    .replace(0, np.nan) \
    .interpolate(method ='linear', limit_direction ='forward')

print(df)

Giving:

    98        99        100           101       102       103       104
0  7260 -4.458639 -4.000000  7.000000e-08  0.139307       NaN -0.111442
1  8030 -4.452569 -4.000000  4.000000e-08  0.134743 -0.100146 -0.049154
2   498 -4.450786 -4.437234  1.000000e-07  0.157735 -0.162864 -0.055058
3  1500 -4.450303 -4.429208  1.000000e-07  0.121954 -0.188673 -0.144081
4  6600 -4.462030 -4.428670  4.000000e-08  0.100803 -0.184033 -0.184303
5  8860 -4.458012 -4.216210 -2.500000e-08  0.080150  0.425813 -0.108018
6   530 -4.453994 -4.003749 -9.000000e-08  0.059497  1.035659 -0.031734
7  6904 -4.449222 -3.184034 -2.000000e-07  0.091804  1.512596 -0.011507
8  7700 -4.454966 -3.041102 -1.000000e-07  0.121129  1.837772  0.068041
9  6463 -4.452432 -3.109603 -4.000000e-08  0.192029  2.062491  0.106653

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM