我修改了这篇文章中的一行,以有条件地从csv文件中读取行:
filename=r'C:\Users\Nutzer\Desktop\Projects\UK_Traffic_Data\test.csv'
df = (pd.read_csv(filename, error_bad_lines=False) [lambda x: x['Accident_Index'].str.startswith('2005')])
这条线对于小型测试数据集而言效果很好。但是,我确实要读取一个很大的csv文件,并且读取该文件需要很长时间。实际上,最终NotebookApp.iopub_data_rate_limit
达到了。我的问题是:
str.startswith('2005')
。您对此有何建议?以下是一些示例数据:
所需的输出应该是包含前六条记录的pandas数据框。
最初,我们可以只读取要在上述条件下进行过滤的特定列(假设这会大大减少读取开销)。
#reading the mask column
df_indx = (pd.read_csv(filename, error_bad_lines=False,usecols=['Accident_Index'])
[lambda x: x['Accident_Index'].str.startswith('2005')])
然后,我们可以使用该列中的值通过skiprows和nrows属性从文件中读取其余列,因为它们是输入文件中的排序值
df_data= (pd.read_csv(filename,
error_bad_lines=False,header=0,skiprows=df_indx.index[0],nrows=df_indx.shape[0]))
df_data.columns=['Accident_index','data']
这将提供我们想要的数据的子集。我们可能不需要单独获取列名。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句