根据字典

时间:2015-09-16 21:13:30

标签: python csv dictionary pandas error-handling

我想将csv文件转换为pandas数据帧,并且在输入时我想根据类别字典验证csv文件的值。

例如,csv文件中唯一可接受的列颜色值为“红色”,“黄色”和“绿色”。如果csv中有一行将颜色列为'purple',我想继续将csv处理成pandas数据帧,但是会抛出错误。我想对数据帧中的所有列执行此操作,并且仍然可以使用数据帧,只是抛出错误,所以我知道是否存在违反我的数据字典的内容。像这样:

df = pd.read_csv(filename)
error: "There's purple in here!"

color_sort = df.sort(columns= "color")

1 个答案:

答案 0 :(得分:3)

我不打算这样做只是按原样加载整个csv,然后对列值进行后处理:

In [32]:
valid_colours = ['red','green','blue']
df = pd.DataFrame({'colours':['black', 'red', 'purple', 'blue','green']})
df

Out[32]:
  colours
0   black
1     red
2  purple
3    blue
4   green

In [33]:    
df['valid'] = df['colours'].isin(valid_colours)
df

Out[33]:
  colours  valid
0   black  False
1     red   True
2  purple  False
3    blue   True
4   green   True

原因是因为在读取csv时逐行检查的速度很慢,而执行上述操作将是一种矢量化方法并且更快