2016-05-17 150 views
0

Python中是否可以從單獨的csv複製數據並將其放置在另一個csv的特定列中?從csv文件寫入特定列

我想只需要每個CSV文件file1.csvfile2.csvfile3.csv

File1.csv Column A 
File2.csv Column A 
File3.csv Column A 

的第一列,並有一個output.csv與所有這些CSV年代column A數據被寫入到其自己的列

output.csv Column A (file1) 
output.csv Column B (file2) 
output.csv Column C (file3) 

下面是我對過濾部分的不知道如何去做writer

csvinputlist = ['file1.csv','file2.csv','file3.csv'] 


for csvinput in csvinputlist 
    reader = csv.reader(open(r'{0}'.format(csvinput)), delimiter=',') 
    filtered = filter(lambda p:column A == p[0], reader) 
    csv.writer(open(output.csv ??????? 
+0

「csvinput = csvinputlist」的含義是什麼? –

+0

@IshanM我不確定我爲什麼放這個,我會刪除。可以像'csv.writer(open(output.csv,'a'newline ='',),delimiter =',')。writecolumns(過濾)一樣嗎?而不是「作家」 – iOSecure

回答

2

您可以使用pandas此:

import pandas as pd 
csvinputlist = ['file1.csv','file2.csv','file3.csv'] 
csvinput = csvinputlist 
df = pd.DataFrame() 
for i, csvinput in enumerate(csvinputlist): 
    reader = pd.read_csv(csvinput) 
    df['A{}'.format(i+1)]=reader['A'] 

df.to_csv('constructed.csv') 

其中「A」代表你想讀的列的列標題。如果您的專欄沒有標題,您可以按如下方式分配它們:

import pandas as pd 
csvinputlist = ['file1.csv','file2.csv','file3.csv'] 
csvinput = csvinputlist 
headers=['A', 'B', 'C'] # continue for as many column that are in the file 
df = pd.DataFrame() 
for i, csvinput in enumerate(csvinputlist): 
    reader = pd.read_csv(csvinput, header=None, names=headers) 
    df['A{}'.format(i+1)]=reader['A'] 

df.to_csv('constructed.csv') 
+0

謝謝! 「A」代表什麼?它給我'KeyError:'A''當我運行它。第一列有一堆不同的數字,我只是把A縮短它 – iOSecure

+1

@iOSecure請看到最新的答案,希望這解決了'Keyerror'。 –

+0

它的確如此,非常感謝!這正是我想要做的。只需要在'Dataframe'中利用f就可以使其工作。 – iOSecure