2017-09-14 19 views
1

私はcsvをPandasにデータフレームとして読み込みたいと思います。私はパンダでCSVを読んだときCsvがPandas Dataframeの列を欠いています

私のcsvファイルは次の形式

a b c d 
0 1 2 3 4 5 
1 2 3 4 5 6 

を持っている私は、次のデータフレームを取得

a b c d 
0 1 2 3 4 5 
1 2 3 4 5 6 

私はprint df.columns を実行すると、私のような何かを得る:

Index([u'a', u'b', u'c', u'd'], dtype='object') 

を実行すると 私が取得:

a 2 
b 3 
c 4 
d 5 
Name: (0, 1) 

私は私が持っていたする必要がありますどのように多くの列がわからないデータフレーム

a b c d col1 col2 
0 1 2 3 4 5 
1 2 3 4 5 6 

のようなものを持っていると思います。しかし、ヘッダーの後の1行目には値の数だけの列が必要です。それをどうすれば実現できますか?

+0

この[解答](https://stackoverflow.com/questions/34358196/read-csv-with-missing-incomplete-header-or-irregular-number-of-を作るためにリストの内包列)は助けることができる – floatingpurr

答えて

2

これを行う1つの方法は、データを2度読み込むことです。一度最初の行(元の列)をスキップし、列名を読み出し(およびすべての行がスキップ)のみを有する第二

df = pd.read_csv(header=None, skiprows=1) 
columns = pd.read_csv(nrows=0).columns.tolist() 
columns 

出力と

['a', 'b', 'c', 'd'] 

今欠落列と使用の番号を確認新しい列

num_missing_cols = len(df.columns) - len(columns) 
new_cols = ['col' + str(i+1) for i in range(num_missing_cols)] 
df.columns = columns + new_cols 
df 

    a b c d col1 col2 
0 0 1 2 3  4  5 
1 1 2 3 4  5  6 
+0

すばらしいことに感謝します。私はちょうどpd.read_clipboard()をpd.read_csv()に変更しなければならなかった –

+0

おっと、そうです。それを今修正します...ありがとう –

関連する問題