2016-07-11 7 views
2

私はCSVファイルBook1とBook2を持っています。 Book1の列はA, B, C, D, Eであり、Book2にあるのはA, B, E, H. Book1に共通する列名だけでなく、Book1に追加されている列名だけが含まれるようにBook2を変更したいと考えています。ファイルは、次のとおりです。2つのcsvファイルを比較し、両方に共通しない列を追加してください

BOOK1

A   B C D E 
10.12.0.1 a 35 0 11 
10.12.0.1 b 35 1 10 
107.77.87 a 35 0 101 

ブック2:

A   B E H 
9.81.2  b 10 w 
10.15.32 b 100 w 
11.16.5 b 101 w 

修正した後、最終的なブック2は次のようになります。 Book2_final:

A   B C D E 
9.81.2  b   10 
10.15.32 b   100 
11.16.5 b   101 

は、私は次のことを試してみました
import pandas 
a= open('input_test.txt','r') 
csv1 = pandas.read_csv('Book2.csv',dtype='unicode') 
inserted_cols = a.read().split(',') 
csv1[inserted_cols].to_csv('Book2_test.csv',index=False) 

ファイル'input_test.txt'にはBook1の列がカンマで区切られた同じ順序で含まれています。しかし、私はエラーが発生します:

KeyError: "['C' 'D' 'E\\n'] not in index" 

何が問題なのか分かりません.New to Python。

+0

あなたはBOOK1のレコード(IPのアドレスが使われる)のいずれかがBook2_finalになりたくありませんか? Book1に存在しない場合、どこにE列の値をBook2_finalに入れるのですか? – aneroid

+0

@nanoidでは、Book2はBook1から値を取りません。私はBook1の追加の列名をBook2に置いて、Book2にある余分な列名を削除してください。この場合はHの列H –

答えて

2

book2の列のreindexbook1の列に使用してください。最初にトランスポーズしてからトランスポーズする必要があります。

book2.T.reindex(book1.columns).T 

enter image description here

+0

素晴らしいです。 1000列のファイルで試しました。その効率的な –

関連する問題