pandas - Extend Index of a DataFrame setting all columns for new rows to NaN?

前端 未结 6 456
日久生厌
日久生厌 2021-02-05 03:58

I have time-indexed data:

df2 = pd.DataFrame({ \'day\': pd.Series([date(2012, 1, 1), date(2012, 1, 3)]), \'b\' : pd.Series([0.22, 0.3]) })
df2 = df2.set_index(\'         


        
6条回答
  •  野趣味
    野趣味 (楼主)
    2021-02-05 04:26

    You can resample passing day as frequency, without specifying a fill_method parameter missing values will be NaN filled as you desired

    df3 = df2.asfreq('D')
    df3
    
    Out[16]:
                   b
    2012-01-01  0.22
    2012-01-02   NaN
    2012-01-03  0.30
    

    To answer your second part, I can't think of a more elegant way at the moment:

    df3 = DataFrame({ 'day': Series([date(2012, 1, 4), date(2012, 1, 31)])})
    df3.set_index('day',inplace=True)
    merged = df2.append(df3)
    merged = merged.asfreq('D')
    merged
    
    
    Out[46]:
                   b
    2012-01-01  0.22
    2012-01-02   NaN
    2012-01-03  0.30
    2012-01-04   NaN
    2012-01-05   NaN
    2012-01-06   NaN
    2012-01-07   NaN
    2012-01-08   NaN
    2012-01-09   NaN
    2012-01-10   NaN
    2012-01-11   NaN
    2012-01-12   NaN
    2012-01-13   NaN
    2012-01-14   NaN
    2012-01-15   NaN
    2012-01-16   NaN
    2012-01-17   NaN
    2012-01-18   NaN
    2012-01-19   NaN
    2012-01-20   NaN
    2012-01-21   NaN
    2012-01-22   NaN
    2012-01-23   NaN
    2012-01-24   NaN
    2012-01-25   NaN
    2012-01-26   NaN
    2012-01-27   NaN
    2012-01-28   NaN
    2012-01-29   NaN
    2012-01-30   NaN
    2012-01-31   NaN
    

    This constructs a second time series and then we just append and call asfreq('D') as before.

提交回复
热议问题