2017-09-14 156 views
1

我想讀取一個csv作爲數據幀到Pandas中。Csv與熊貓數據框缺失列

我的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 

的CSV當我執行print df.columns 我得到的是這樣的:

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

而當我執行print df.iloc[0] 我得到:

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 

我不知道我有多少列必須有。但是我需要在標題之後的第一行中包含多少個值。我怎樣才能做到這一點?

+0

這【答案】(https://stackoverflow.com/questions/34358196/read-csv-with-missing-incomplete-header-or-irregular-number-of-列)可以幫助 – floatingpurr

回答

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

糟糕,我現在要修復它...謝謝 –