2014-04-11 43 views
1

需要一些幫助來解決爲什麼我的數據框返回所有NaN。在Pandas中添加日期列時出錯

print df 
    0 1 2 3 4 
0 1 9 0 7 30 
1 2 8 0 4 30 
2 3 5 0 3 30 
3 4 3 0 3 30 
4 5 1 0 3 30 

然後我添加了日期索引。我只需要增加一天5天。

date = pd.date_range(datetime.datetime.today(), periods=5) 
data = DataFrame(df, index=date) 
print data 

          0 1 2 3 4 
2014-04-10 17:16:09.433000 NaN NaN NaN NaN NaN 
2014-04-11 17:16:09.433000 NaN NaN NaN NaN NaN 
2014-04-12 17:16:09.433000 NaN NaN NaN NaN NaN 
2014-04-13 17:16:09.433000 NaN NaN NaN NaN NaN 
2014-04-14 17:16:09.433000 NaN NaN NaN NaN NaN 

嘗試了幾件不同的事情無濟於事。如果我切換我的原始數據幀爲

np.random.randn(5,5) 

然後它就起作用了。任何人都知道這裏發生了什麼?

編輯:要添加的數據類型是float64

print df.dtypes 

0 float64 
1 float64 
2 float64 
3 float64 
4 float64 
dtype: object 

回答

1

你應該覆蓋原來的數據框的指標有以下:

df.index = date 

什麼DataFrame(df, index=date)做的是,它創造了新的通過將index的值與所使用的df相匹配的數據幀,例如:

DataFrame(df, index=[0,1,2,5,5]) 

返回如下:

0 1 2 3 4 
0 1 9 0 7 30 
1 2 8 0 4 30 
2 3 5 0 3 30 
5 NaN NaN NaN NaN NaN 
5 NaN NaN NaN NaN NaN 

因爲5不包括在原始數據幀的指數。