亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

加快 Pandas 中 csv 文件的條件行讀取速度?

加快 Pandas 中 csv 文件的條件行讀取速度?

慕虎7371278 2023-10-26 10:34:48
我修改了這篇文章中的一行,以有條件地從 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達到了。我的問題是:有沒有辦法改進這段代碼及其性能?“Accident_Index”列中的記錄已排序。因此,如果達到“Accident_Index”不等于的值,則中斷讀取語句可能是一種解決方案str.startswith('2005')。您對如何做到這一點有什么建議嗎?這是一些示例數據:所需的輸出應該是包含前六條記錄的 pandas 數據框。
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

我們最初可以根據上述條件僅讀取我們想要過濾的特定列(假設這會顯著減少讀取開銷)。


#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']

這將給出我們想要的數據的子集。我們可能不需要單獨獲取列名。

https://img1.sycdn.imooc.com/6539d0c40001bf3502430251.jpg

查看完整回答
反對 回復 2023-10-26
  • 1 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號