如何验证pandas.read_csv读取的csv数据?

时间:2017-10-06 04:31:33

标签: python pandas csv

希望使用Python和Pandas验证csv文件中的数据。在提供干净的数据时一切正常。但是,当数据出现问题时,很难找到问题。提出任何类型的错误都会很棒。这是一些伪代码:

dtypes = {'Date': 'str', 'yesno': 'str', 'int_val': 'int', 'decimal_value': 'str'}
df = pd.read_csv(filename, dtype=dtypes)

# Ensure exceptions are thrown for invalid data.

# valid date format in date. ValueError raised for invalid data.
pd.to_datetime(df['Date'])

# 'yes' or 'no' for the yesno field. (has to be in a list of values)
# valid integer for int_val.
# a valid integer or decimal number for decimal_value

我甚至不确定pd.to_datetime是验证日期的最佳方式。这样做的好方法是什么?

1 个答案:

答案 0 :(得分:1)

'是'或者没有'对于yesno字段。 (必须在值列表中):

df.yesno.isin(['yes','no']).all() # Returns False if there are any other values

int_val的有效整数:

df.int_val.astype(int) # Throws an error if there are non-integers
# or, if int_val are floats:
import numpy as np
np.isclose(df.int_val.round(0),df.int_val.astype(int)).all()

decimal_value的有效整数或十进制数:

df.decimal_value.astype(float) # similar to above

使用pd.to_datetime()验证日期可能是最好的;如有必要,您还可以指定日期的格式,例如使用关键字参数format = '%y-%m-%d',其中日期的格式为yyyy-mm-dd