2015-06-25 35 views
0

我有一個CSV文件,其行數可變(並且沒有列標題)。例如。該文件可以從一些有23列的行開始,然後有一些有83列的行等等。現在,當read_csv()開始讀取文件時,它會猜測前幾行被讀取後的列數(我認爲),所以如果數據行在開始的時候比結束時短,我得到下面的例外。有沒有辦法將參數傳遞給函數來將列數設置爲某個最大值?還是有更好的方法來做到這一點?Pandas read_csv - 具有可變列數的行

謝謝。

CParserError:標記數據出錯。 C的誤差:預期在管線150 23個字段,鋸83

+2

http://stackoverflow.com/questions/15242746/handling-variable-number-of-columns-with-pandas-python –

+0

我想將此問題標記爲可能的@NicholasFlees提到的問題的重複 – Sudhi

+0

[處理可變數量的列與Pandas - Python]可能的重複(https://stackoverflow.com/questions/15242746/handling-variable-number-of-列與熊貓-python) – Sudhi

回答

-1
# coding: utf-8 

# In[16]: 

def params(text): 
    pairs = text.split("|") 
    print pairs 
    out = {i.split("=")[0]:i.split("=")[1] for i in pairs} 
    return pd.Series(out) 

params("asd=2|qwe=5") 


# In[27]: 


import pandas as pd 
aa = pd.DataFrame({'id':[1,2],'text':["asd=2|qwe=5","asd=20|qwe=5|qzxc=5"]}) 
aa 



# In[29]: 

aa['text'].apply(params) 


# In[30]: 

pd.concat([aa,aa['text'].apply(params)],1) 
+0

答案不提供任何'params'函數的解釋,我無法找到它與問題相關的問題。 – Sudhi

+0

@Sudhi代碼是可讀的。 'params'函數只是從一個字符串創建一個序列。 – Neerav

+0

不幸的是,代碼的可讀性並不意味着相關性。我不明白你的答案與這個問題有什麼關係。這個問題是關於讀熊貓的CSV文件。您正在討論將函數應用於pandas列,該列看起來像使用參數分割http API調用。請再次閱讀該問題,並顯示您的代碼是如何實際回答的。 – Sudhi

相關問題