2017-06-23 61 views
1

我有一個包含大約3000或4000個csv文件的目錄,所有文件都具有相同的基本格式(爲簡單起見,已將其更改爲簡單數字和標題) :如何從多個csv文件中提取特定數據並放入python中的新單個csv中

A,B,C,D,E,F,G,H,I,J  # header 
1,2,3,4,5,6,7,8,9,0  # let's call this line X 
0,1,2,3,4,5,6,7,8,9  # let's call this line Y 

我想創建包含來自所有原有的特定信息中的一個主csv文件,具有以下這種格式頭:filename,XI,YB,XB,YB-XB

繼續前面的例子,這是標題和新的CSV文件的第一行會非常的樣子:

filename,XI,YB,XB,YB-XB 
File1,9,1,2,-1 
File2,... 

...等,創建一個包含一個主csv文件來自目錄中每個原始csv的相同特定信息。

我是新來的python,並試圖編寫一個代碼,這將爲我做這件事,但這比我以前的少量實踐更復雜。任何幫助解釋如何做到這一點或代碼的例子將不勝感激。

謝謝,艾琳

編輯: 網上找,看看是否能找到,如果有已經回答了這個問題之後,我能夠拼湊大部分的工作代碼放在一起是完成我想要的它要做,儘管我仍然無法訪問原始CSV文件中的特定數字。這裏是我想出迄今:

import glob 
import os 

outfile = open('path/output.csv', 'w') 
outfile.write('filename,XI,YB,XB,YB-XB\n') 
for filename in glob.glob('path/*.csv'): 
    if filename == 'output.csv': 
     continue  # to skip this file 
    with open(filename, 'r') as infile: 
     count = 0 
     lineno = 0 
     for lineno == 1: 
      continue  # skips header 
     fields = line.split(',') 
     a =  # Here goes the code to access XI 
     b =  # Here goes the code to access YB 
     c =  # Here goes the code to access XB 
     d = b - c 
     outfile.write('%s,%g,%g,%g,%g\n' % (filename, a, b, c, d)) 
     count += 1 
    if count == 0:  # in case of empty files 
     outfile.write('%s,0,0,0,0\n' % filename) 
     print '%s is empty!' % filename 
outfile.close() 
+0

粘貼代碼! –

+0

確實!分享你的嘗試,也許你認爲你可以解決它! – Zimano

+0

我現在已經添加了這個代碼。 – Erin

回答

1

可與大熊貓通過以下方式來完成,如果所有文件具有相同的列名

import pandas as pd 
import glob 

df_all = pd.DataFrame(columns =['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume']) 

for filename in glob.glob('path\*.csv'): 
    df = pd.read_csv(filename,usecols = ['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume']) 
    df_all = pd.concat([df,df_all],axis=0) 

df_all.to_csv(mergedfilename) 
+0

爲特定列編輯 – Uasthana

相關問題