gpt4 book ai didi

python - Pandas 在读取格式错误的数据时不会引发异常

转载 作者:行者123 更新时间:2023-12-01 01:28:51 25 4
gpt4 key购买 nike

以下内容格式错误(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

以下是 pandas 的读取方式。

>>> 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

为什么它不引发异常?

第一列值是实际值,未经更改。

谢谢,阿努普

最佳答案

Pandas 假设有一个索引

这是设计使然。第一个“列”被视为索引,因此不需要命名。要理解这一点,您必须明白每个数据帧都必须有一个索引,无论是否明确指定。例如,请注意左侧的值 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!'

assert当您的 CSV 文件格式错误时,语句将引发 AssertionError

关于python - Pandas 在读取格式错误的数据时不会引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53089297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com