![](/img/trans.png)
[英]How do I transpose/pivot a csv file with python *without* loading the whole file into memory?
[英]How can I open a csv file in python, and read one line at a time, without loading the whole csv file in memory?
我有一個大小不適合我機器內存的 csv 文件。 所以我想打開 csv 文件,然后一次讀取它的行。 我基本上想制作一個從csv生成單行的python生成器。
提前致謝! :)
with open(filename, "r") as file:
for line in file:
doanything()
只要有可能,Python 就是懶惰的。 文件對象是生成器,不會加載整個文件,而是一次只加載一行。
我個人更喜歡使用csv.DictReader
您將其設置為帶有指針/參數的對象,然后一次訪問文件一行,您只需使用next
對其進行迭代,它會返回一個字典,其中包含 csv 文件中的命名字段鍵、值對。
例如
import csv
csvfile = open('names.csv')
my_reader = csv.DictReader(csvfile)
first_row = next(my_reader)
for row in my_reader:
print ( [(k,v) for k,v in row.items() ] )
csvfile.close()
有關參數使用等信息,請參閱鏈接的文檔 - 這相當簡單。
解決方案:
您可以使用 pandas read_csv 函數中可用的chunksize
參數
chunksize = 10 ** 6
for chunk in pd.read_csv(filename, chunksize=chunksize):
print(type(chunk))
# CODE HERE
將chunksize
設置為 1,它應該會處理您的問題陳述。
從 csv 生成單行的 python 生成器。
這聽起來像是您想要來自內置csv
模塊的csv.reader 。 您將獲得文件中每一行的一個列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.