2013-03-27 83 views
3

我想在週日數據中讀取數據,然後重新編制數據以填充週末數據。我嘗試了下面的代碼,但它不會重新索引數據。 Set_index產生一個長度錯誤信息。大熊貓,數據框set_index&reindexing

import pandas as pd 

def fill_dataframe(filename): 
    dataf = pd.read_csv(filename, header= None, index_col = [0]) 
return(dataf) 

rng = pd.date_range('10/1/2010', periods=61) 
date_rng = pd.DataFrame(rng,index = rng) 

data_1.reindex(date_rng, method = 'ffill') 

讀入的數據有41行,生成的日期值有61行。有什麼建議麼?

data read in by csv (1st 7 rows) 
     X0  X1 
10/1/2010 71.27 
10/4/2010 70.33 
10/5/2010 72.94 
10/6/2010 74.15 
10/7/2010 71.40 
10/8/2010 72.58 
10/11/2010 72.66 

dates generated by rng in the second Data Frame (first 11 rows) 
         0 
2010-10-01 2010-10-01 00:00:00 
2010-10-02 2010-10-02 00:00:00 
2010-10-03 2010-10-03 00:00:00 
2010-10-04 2010-10-04 00:00:00 
2010-10-05 2010-10-05 00:00:00 
2010-10-06 2010-10-06 00:00:00 
2010-10-07 2010-10-07 00:00:00 
2010-10-08 2010-10-08 00:00:00 
2010-10-09 2010-10-09 00:00:00 
2010-10-10 2010-10-10 00:00:00 
2010-10-11 2010-10-11 00:00:00 

回答

3

只是由(1D)時間序列或者作爲這個系列的作品(在0.10.1)重新編制索引:

data_1.reindex(rng, method = 'ffill') 
data_1.reindex(Series(rng, index=rng), method = 'ffill') 

隨着date_rng爲數據幀我得到類型錯誤:無法與0的比較時間戳,我懷疑這可能是一個錯誤,但我不能完全肯定預期的行爲應該是什麼...

+0

安迪,我已經運行了你建議的兩種方法,並且沒有得到任何重新索引。在10-01-13和10-04-10之間的任何一種方法下,數據幀data_1中都沒有顯示日期行10-02-10&10-03-10,這是我所期望的。 – 2013-03-28 02:04:50

+1

@DickEshelman你使用的是什麼版本的熊貓? 0.10.1這些日期顯示。 (我拷貝你的第一個DataFrame到剪貼板並使用'data_1 = pd.read_clipboard(sep ='',header = None,parse_dates = [0]).set_index(0)'。) – 2013-03-28 07:16:10

+0

Andy,我升級到0.10.1後你的迴應。由於其他嘗試使這個工作,我認爲有一些與Pandas CSV閱讀器的交互。我無法獲得與剪貼板相同的結果。你介意用讀者來嘗試同樣的事情嗎?我會嘗試剪貼板。 – 2013-03-28 15:50:44