簡體   English   中英

熊貓read_csv錯誤地讀取了sep = None的列數

[英]pandas read_csv incorrectly reading number of columns with sep=None

我有以下單列CSV文件:

id
1
2
3

當我使用pandas.read_csv('path/to/csv')讀取pandas.read_csv('path/to/csv')它可以正確讀取它。

但是,要求表明我必須接受多個定界符,因此我的現有代碼使用sep=None

讀取上述CSV時, pandas.read_csv('path/to/csv', sep=None)會產生ValueError: Expected 2 fields in line 2, saw 1 顯然,它錯誤地標識了分隔符並期望有兩列。

誰能提出解決此問題的方法,讓我繼續接受多個定界符,但也能正確處理上述CSV? 使用正則表達式定界符(例如sep=';|,'是不可接受的,因為它會導致大熊貓忽略引號。

這是我們最終可以找到的最佳解決方案:

data = csv_file.decode(chardet.detect(csv_file)['encoding'])
dialect = csv.Sniffer().sniff(StringIO(data).readline())
if dialect.delimiter.isalnum():
    dialect.delimiter = ','  
pd.read_csv(StringIO(data), dialect=dialect)

理由是,如果Sniffer無法檢測的分隔符,它是一個單行CSV和分隔符設置,使得它能夠被讀取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM