簡體   English   中英

Pandas 僅讀取 CSV 文件的特定行

[英]Pandas Read in only specific lines of a CSV file

我有一個非常大的 CSV 使用普通pd.read_csv命令需要大約 30 秒才能讀取。 有沒有辦法加快這個過程? 我在想可能只讀取在其中一列中具有某些匹配值的行的東西。 即僅讀取“A”列中的值為“5”的行。

Dask模塊可以對 Python 中的大型 CSV 文件進行惰性讀取。

您可以通過調用.compute()方法來觸發計算。 此時文件以塊的形式讀取並應用您指定的任何條件邏輯。

import dask.dataframe as dd

df = dd.read_csv(csv_file)
df = df[df['A'] == 5]

df = df.compute()
print(len(df)) # print number of records

print(df.head()) # print first 5 rows to show sample of data

如果要在 CSV 文件中查找值,則必須查找整個文檔,然后將其限制為 5 個結果。

如果您只想檢索前五行,您可能正在尋找以下內容:

nrows :int,可選

要讀取的文件行數。 對於讀取大文件片段很有用。

參考: https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html

試着把它分塊,伙計。 松露洗牌! Goonies 永遠不要說死。

mylist = []
for chunk in  pd.read_csv('csv_file.csv', sep=',', chunksize=10000):
    mylist.append(chunk[chunk.A == 5])

big_data = pd.concat(mylist, axis= 0)
del mylist

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM