簡體   English   中英

Pandas read_csv 帶有不正確的 header 分隔符

[英]Pandas read_csv with incorrect header delimiter

我有一個 csv 文件,比如 test.csv,看起來像這樣

Data 1 | Data 2 | Data 3 |
1      | 2      | 3      |      |      |    6

如果我在記事本++ 或文本中打開 csv,它會顯示如下

Data 1, Data 2, Data 3
1,2,3,,,6

instead of

Data 1, Data 2, Data 3, ,,
1,2,3,,,6

使用 pandas.read_csv 時出現錯誤,因為我的行的列數多於 header 行中聲明的列數。 有沒有辦法找到整個CSV的最大列數?

我的提議是:

  • 跳過標題行,
  • 指定您自己的列名列表。

所以代碼應該是:

df = pd.read_csv(io.StringIO(txt), skiprows=1,
    names=['Data 1', 'Data 2', 'Data 3', 'Data 4', 'Data 5', 'Data 6'])

要考慮的一個細節是應該如何表示空單元格。

read_csv的默認行為是將它們視為NaN ,但缺點是這些列被強制為float

另一種可能性是傳遞na_filter=False參數,然后:

  • 這樣的空字符串“按原樣”表示(作為空字符串),
  • 但是這次具有這些值的列被強制轉換為object ,因為字符串單元格與int混合在一起。

另請注意,您的標題行的格式在更多細節上已損壞。 問題的根源是逗號后的空格:它們成為下一列名稱的初始部分。

因此,即使您只有 3 列數據,列名也將是:

['Data 1', ' Data 2', ' Data 3']

(注意前導空格)。 所以這是跳過標題行的另一個原因。

暫無
暫無

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

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