【问题标题】:Filling None values in the dataframe in rows Pandas Python在行中填充数据框中的无值 Pandas Python
【发布时间】:2019-03-21 21:02:32
【问题描述】:

这是数据:

    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 值替换整个行,只留下一个。所以上面dataframe的最终输出一定是这样的:

    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

我想知道如何填充 nan 值来代替前四行?
请让我知道我能做什么。

【问题讨论】:

    标签: python python-3.x pandas csv dataframe


    【解决方案1】:

    使用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
    

    【讨论】:

    • 嘿,时间呢?
    • 不询问运行时间。关于时间列(我认为它的索引),根据问题也需要为 NaN 正确。好答案
    • @SarthakNegi - 谢谢。
    • 谢谢朋友...我只是想替换这些值。未替换的索引对我来说很好。但伟大的工作。我会接受你的回答。
    • @JafferWilson - 谢谢。
    猜你喜欢
    • 2013-06-10
    • 1970-01-01
    • 2014-03-15
    • 2020-11-26
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多