插值_用NaN处理前几行

时间:2016-10-04 09:51:54

标签: python spyder

我试图在数据帧s.t中转换所有0和NA。我可以做进一步的计算。这是一个例子。

符号| tdate | tclose

 1| 20150105|   15.78
 1| 20150106|   15.78
 1| 20150107|   15.48
 1| 20150108|   14.96
 1| 20150109|   15.08
 2| 20150105|   14.91
 2| 20150106|   14.18
 2| 20150107|   14.18
 2| 20150108|   14.18
 2| 20150109|   13.45
 3| 20150105|   15.69
 3| 20150106|   16.46
 3| 20150107|   16.41
 3| 20150108|   16.41
 3| 20150109|   16.41

例如符号1中的0,我希望0是最接近的值,不是0或NaN,即15.78。 对于符号2中的0 / Na,我希望使用14.91和13.45将0 / NaN插入到插值结果中。 转换后,它应该是这样的。

符号| tdate | tclose

df=pd.read_csv('~/Desktop/stackoverflow.csv')
df1=df.replace(0,np.nan)
for i in range(1,len(df1)):
    df2=df1[df1.symbol==i]
    df3=pd.DataFrame(df2.interpolate())
    print(df3)

我尝试了类似

的内容
 1| 20150105|   NaN
 1| 20150106|   15.78
 1| 20150107|   15.48
 1| 20150108|   14.96
 1| 20150109|   15.08
 2| 20150105|   14.91
 2| 20150106|   14.18
 2| 20150107|   14.18
 2| 20150108|   14.18
 2| 20150109|   13.45
 3| 20150105|   15.69
 3| 20150106|   16.46
 3| 20150107|   16.41
 3| 20150108|   16.41
 3| 20150109|   16.41

给你

符号| tdate | tclose

df=pd.read_csv('~/Desktop/stackoverflow.csv')
  df1=df.replace(0,np.nan)
  for i in range(1,len(df1)):
      df2=df1[df1.symbol==i]
      df3=pd.DataFrame(df2.interpolate())
      df4=df3.fillna()
      print(df4)

但是,NaN的第一行不能简单地插入,因为前面没有值。 在实际情况中,每个符号的头部有许多连续的行。我刚学了一个星期的python,这真是我无法实现的。

原来我可以用......叫fillna()

Shader "GUI/3D Text Shader - Cull Back" {
Properties {
    _MainTex ("Font Texture", 2D) = "white" {}
    _Color ("Text Color", Color) = (1,1,1,1)
}

SubShader {
    Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
    Lighting Off Cull Back ZWrite Off Fog { Mode Off }
    Blend SrcAlpha OneMinusSrcAlpha
    Pass {
        Color [_Color]
        SetTexture [_MainTex] {
            combine primary, texture * primary
        }
    }
}

非常感谢鼓舞人心的评论。如果你有一个更简单或更简洁的方法,PLZ添加你的答案。(我的方法实际上返回一个质量,尽管我想要的结果混合在其中)

0 个答案:

没有答案