2016-05-17 8 views
0

Pythonでは、別のcsvからデータをコピーし、別のcsvの特定の列に配置することは可能ですか?私はfile1.csvfile2.csvfile3.csvcsvファイルから特定の列に書き込む

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

と独自の列

に書き込まれているすべてのそれらのcsvのの column Aデータを持つ単一 output.csvを持つ各CSVファイルの最初の列だけを取るしたいと思います

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(filtered)'完了しますか? 'writerows'の代わりに – iOSecure

答えて

2

あなたはこのためpandasを使用することができます。

「A」が読みたい列のあなたの列ヘッダーを表し
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') 

。あなたの列にヘッダーがない場合は、次のように割り当てられます:

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

関連する問題