代码之家  ›  专栏  ›  技术社区  ›  Jaffer Wilson Dilip kumar

在行中填充dataframe中的None值

  •  2
  • Jaffer Wilson Dilip kumar  · 技术社区  · 6 年前

    数据如下:

        o   h   l   c
    Time                
    2018-10-12 09:35:00 1.15868 1.15890 1.15868 1.15884
    2018-10-12 09:36:00 1.15887 1.15889 1.15869 1.15869
    2018-10-12 09:37:00 1.15869 1.15890 1.15869 1.15883
    2018-10-12 09:38:00 1.15883 1.15894 1.15881 1.15888
    2018-10-12 09:39:00 1.15888 1.15903 1.15887 1.15894
    

    Nan 值只剩下一个。因此,上述数据帧的最终输出必须如下所示:

        o   h   l   c
    Time                
    nan nan nan nan
    nan nan nan nan
    nan nan nan nan
    nan nan nan nan
    2018-10-12 09:39:00 1.15888 1.15903 1.15887 1.15894
    

    我尝试了以下操作,但在尝试时出错:

    df.fillna(inplace=True,value=None)
    
    ValueError: must specify a fill method or value
    


    好心的,让我知道我能做什么。

    1 回复  |  直到 6 年前
        1
  •  4
  •   jezrael    6 年前

    使用 iloc :

    df.iloc[:-1] = np.nan
    print (df)
                               o        h        l        c
    Time                                                   
    2018-10-12 09:35:00      NaN      NaN      NaN      NaN
    2018-10-12 09:36:00      NaN      NaN      NaN      NaN
    2018-10-12 09:37:00      NaN      NaN      NaN      NaN
    2018-10-12 09:38:00      NaN      NaN      NaN      NaN
    2018-10-12 09:39:00  1.15888  1.15903  1.15887  1.15894
    

    对于索引中缺少的值:

    df = df.set_index(np.append([np.nan] * (len(df)-1), df.index[-1])).rename_axis(df.index.name)
    print (df)
                               o        h        l        c
    Time                                                   
    NaT                      NaN      NaN      NaN      NaN
    NaT                      NaN      NaN      NaN      NaN
    NaT                      NaN      NaN      NaN      NaN
    NaT                      NaN      NaN      NaN      NaN
    2018-10-12 09:39:00  1.15888  1.15903  1.15887  1.15894
    

    df1 = pd.DataFrame(index=df.index, columns=df.columns, data=df.iloc[[-1]])
    
    print (df1)
                               o        h        l        c
    Time                                                   
    2018-10-12 09:35:00      NaN      NaN      NaN      NaN
    2018-10-12 09:36:00      NaN      NaN      NaN      NaN
    2018-10-12 09:37:00      NaN      NaN      NaN      NaN
    2018-10-12 09:38:00      NaN      NaN      NaN      NaN
    2018-10-12 09:39:00  1.15888  1.15903  1.15887  1.15894
    

    df1 = pd.DataFrame(index=np.append([np.nan] * (len(df)-1), df.index[-1]), 
                       columns=df.columns, 
                       data=df.iloc[[-1]]).rename_axis(df.index.name)
    
    print (df1)
                               o        h        l        c
    Time                                                   
    NaT                      NaN      NaN      NaN      NaN
    NaT                      NaN      NaN      NaN      NaN
    NaT                      NaN      NaN      NaN      NaN
    NaT                      NaN      NaN      NaN      NaN
    2018-10-12 09:39:00  1.15888  1.15903  1.15887  1.15894