我想将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")
答案 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时逐行检查的速度很慢,而执行上述操作将是一种矢量化方法并且更快