Python 读取格式错误的数据时不引发异常

Python 读取格式错误的数据时不引发异常,python,pandas,csv,dataframe,indexing,Python,Pandas,Csv,Dataframe,Indexing,以下内容格式不正确(5列但6个值),但pandas不会引发异常 timestamp,col1,col2,col3,col4 1540998000,XY,40000764,G1-FDD:0,13.90,13.90 1540998000,XY,40000764,C1-FDD:0,-102.80,-102.80 1540998000,XY,40000764,C1-FDD:1,-102.80,-102.80 以下是熊猫如何阅读它 >>> import pandas >>&

以下内容格式不正确(5列但6个值),但pandas不会引发异常

timestamp,col1,col2,col3,col4
1540998000,XY,40000764,G1-FDD:0,13.90,13.90
1540998000,XY,40000764,C1-FDD:0,-102.80,-102.80
1540998000,XY,40000764,C1-FDD:1,-102.80,-102.80
以下是熊猫如何阅读它

>>> import pandas
>>> pandas.read_csv("some_20181031-150205.csv")
           timestamp  col1     col2           col3       col4
1540998000     XY  40000764  G1-FDD:0         13.9       13.9
1540998000     XY  40000764  C1-FDD:0       -102.8     -102.8
1540998000     XY  40000764  C1-FDD:1       -102.8     -102.8
为什么不提出例外

第一列值为实际值,未被更改

谢谢, Anoop

假设一个索引 这是故意的。第一个“列”被视为索引,因此不需要命名。要理解这一点,您必须理解每个数据帧都必须有一个索引,无论是否显式指定。例如,请注意左侧的值
0,1,2

import pandas as pd, numpy as np

df = pd.DataFrame(np.random.random((3, 5)))

print(df)

          0         1         2         3         4
0  0.244763  0.994879  0.085906  0.330168  0.269433
1  0.849739  0.631897  0.372024  0.413401  0.866026
2  0.183609  0.316389  0.213718  0.707552  0.033736
访问索引 您可以直接访问索引,在本例中是一个
pd.RangeIndex

print(df.index)
RangeIndex(start=0, stop=3, step=1)

print(df.index.values)
array([0, 1, 2], dtype=int64)
显式测试 您可以明确检查列标签是否与数据对齐:

def check_csv(file_in):
    col_count = pd.read_csv(x, nrows=0, header=None).shape[1]                 # 5
    data_count = pd.read_csv(x, skiprows=[0], nrows=0, header=None).shape[1]  # 6
    return col_count == data_count

assert check_csv('file.csv'), 'Dataframe is malformed, check column labels versus data!'

当CSV文件格式不正确时,该语句将引发断言错误。

它假定第一列是索引。这种行为是故意的。但这是一场浩劫!还有其他格式不正确的CSV出现了错误,但这正在逃避注意@AnoopSaxena,当然,我已经更新了一个检查,你可以执行它来发现什么时候会发生这种情况。