Python 读取格式错误的数据时不引发异常
以下内容格式不正确(5列但6个值),但pandas不会引发异常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 >>&
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,当然,我已经更新了一个检查,你可以执行它来发现什么时候会发生这种情况。