Python 使用不正确的标题分隔符读取\u csv

Python 使用不正确的标题分隔符读取\u csv,python,pandas,Python,Pandas,我有一个csv文件,比如test.csv,看起来像这样 Data 1 | Data 2 | Data 3 | 1 | 2 | 3 | | | 6 Data 1, Data 2, Data 3 1,2,3,,,6 instead of Data 1, Data 2, Data 3, ,, 1,2,3,,,6 如果我用记事本++或文本打开csv,它会显示如下 Data 1 | Data 2 | Data 3 | 1 | 2

我有一个csv文件,比如test.csv,看起来像这样

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

instead of

Data 1, Data 2, Data 3, ,,
1,2,3,,,6
如果我用记事本++或文本打开csv,它会显示如下

Data 1 | Data 2 | Data 3 |
1      | 2      | 3      |      |      |    6
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时出错,因为我的行中包含的列比标题行中声明的多。有没有办法找到整个CSV的最大列数?

我的建议是:

  • 跳过标题行
  • 指定您自己的列名列表
因此,代码应该是:

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

一个要考虑的细节是如何表示空单元格。< /P> read_csv的默认行为是将它们视为NaN,但 缺点是这样的列被强制浮动

另一种可能是通过
na_filter=False
参数,然后:

  • 此类空字符串表示为“原样”(作为空字符串)
  • 但具有这些值的列这次被强制为对象, 因为字符串单元格与int混合在一起
还请注意,标题行的格式在一个或多个版本中损坏 细节问题的根源是逗号后的空格: 它们将成为下一个列名的起始部分

因此,即使只有3列数据,列名也会是:

['Data 1', ' Data 2', ' Data 3']
(注意前导空格)。因此,这是另一个跳过本节的原因
标题行。

能否显示用于在csv中读取的代码?如果给定行没有标题,它仍应读入,列将命名为“Unnamed:0”、“Unnamed:1”等。
read\u csv
是否有某种类型的
skip\u header
参数?@Denver“Unnamed:1”仅在看到空标题时显示,如上面第二个示例中所示,带有额外的“,”指示清空者,但现有标头。在我的例子中,我没有标题,并且在尝试读取x以上的内容时出错columns@hpaulj应该说明的是,上面的例子是一个简化版本。它确实有一个跳过标题,但在我的例子中,前200行有x列,然后第201行有x+5列读取文档,查看它有哪些选项来处理具有不同列数和/或缺少值的行。正确的csv具有一致的列数。