2013-06-11 124 views
1

我想遍歷包含一些數字,並希望保存到數據框的列表。熊貓數據框追加或Set_Value

然而在嘗試set_valuesconcat(這更加困難)之後。我無法獲得合適的解決方案。另一個問題是,它有閱讀「END」之前停止......

列表和數據框下面給出:

words= ['302', '1208', '1208', '0', '179', '1208', '1208', '0', '904', '233', '233', '0', '***END', 'OF', 'REPORT***'] 

dd = pd.DataFrame(columns=("AA","BB","CC","DD")) 

和我曾使用至今代碼:

for r in range(40,48,4): 
    for s in range(41,49,4): 
     for t in range(42,50,4): 
      for z in range(43,51,4): 
       dd = dd.set_value(len(dd),'AA',words[r]) 
       dd = dd.set_value(len(dd),'BB',words[s]) 
       dd = dd.set_value(len(dd),'CC',words[t]) 
       dd = dd.set_value(len(dd),'DD',words[z]) 

我要像下面返回的東西:

AA | BB | CC | DD |  
302|1208|1208|0 | 

回答

3

對於我來說,concat是最後的資源ORT。它可以得到不可避免的毛。而且,對於它的價值,我不認爲我曾經使用過set_value--它不一定非常細緻。

下面是一個解決方案。

In [10]: numbers = np.array(words[:words.index('***END')]).astype('int') 

In [11]: columns = ['AA', 'BB', 'CC', 'DD'] 

In [12]: dd = DataFrame(numbers.reshape(-1, 4), columns=columns) 

In [13]: dd 
Out[13]: 
    AA BB CC DD 
0 302 1208 1208 0 
1 179 1208 1208 0 
2 904 233 233 0 

(如果-1是新的給你,看documentation for reshape

+0

同意......如果你使用一個for循環你可能做錯了。 :) –

+0

非常整潔優雅的做法。對於精通閱讀和存儲來自太空或逗號分隔文件的數據的傳統軟件來說,這將是一次巨大的勝利。 – LonelySoul