[英]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.