2014-03-26 104 views
0

我正在逐個讀取多個.csv文件,取一列並將這些列累積到一個數組中,最後想要將一個.csv文件從中取出。將列添加到二維數組

enter code here 
import numpy as np 
import matplotlib.pyplot as plt 
import os, os.path 
for root, dirs, files in os.walk('C:\\Users\\me\\Desktop\\csvfiles'): 
    for f in files: 
    fullpath = os.path.join(root, f) 
    if os.path.splitext(fullpath)[1] == '.csv': 
     data = np.genfromtxt(fullpath, delimiter=',',names=['A', 'B', 'C', 'D']) 
     col_sel = np.array(data['B']) 
     col_sel = np.hstack([col_sel]) 
    np.savetxt('test.csv', col_sel, delimiter=',') 

不知何故,這不是將數據添加到列向列陣。如果這一切有效,其他一切可能都會落實到位有人能告訴我爲什麼嗎?

+0

您始終獲得的第二列,然後將它堆到本身,這意味着每次你覆蓋它。你必須在'col_sel'旁邊定義另一個數組,並將'col_sel'堆棧到它。 – Dalek

+0

Dalek你可以寫一行代碼,可以做到這一點? – user3398600

回答

0

如果要垂直堆疊他們和他們在一個二維數組寫在最後列的數目等於CVS文件:

import numpy as np 
import matplotlib.pyplot as plt 
import os, os.path 
n=0 
for root, dirs, files in os.walk('/users/test'): 
    for f in files: 
    fullpath = os.path.join(root, f) 
    if os.path.splitext(fullpath)[1] == '.csv': 
     data = np.genfromtxt(fullpath, delimiter=',',names=['A', 'B', 'C', 'D']) 
     if(n==0): 
      col_sel = data['B'] 
     else: 
      col_sel = np.vstack((col_sel,data['B'])) 
     n+=1 
np.savetxt('/users/test.csv', col_sel, delimiter=',') 
+0

非常感謝。非常感謝。我工作我測試了它。使用重塑將行放入列中。 – user3398600