我有一個非常大的 csv,大約 3500 萬行。
我有一個簡單的 python 計算我的總行數:
file_name = 'extract.csv'
start = time.time()
with open(file_name) as f:
line_count = sum(1 for line in f)
print(line_count)
可執行檔案非常快,并且在沒有記憶體塊的情況下運行良好。
現在我需要計算 Y 列中包含大于或小于 X 的值的行。
我怎樣才能在不崩潰且不減慢執行速度的情況下解決問題?
uj5u.com熱心網友回復:
假設您的列被呼叫col_y并且您的值是整數,您可以使用 pythoncsv模塊。
import csv
threshold = 10
file_name = "extract.csv"
with open(file_name, newline="") as csvfile:
reader = csv.DictReader(csvfile)
line_count = sum(1 for row in reader if int(row.get("col_y", 0)) > threshold)
print(line_count)
或用于計算多個事物:
import csv
threshold = 10
above = 0
below = 0
equal = 0
file_name = "extract.csv"
with open(file_name, newline="") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
val = int(row.get("col_y", 0))
if val > threshold:
above = 1
elif val < threshold:
below = 1
elif val == threshold:
equal = 1
else:
print("Something isn't right")
print(f"{above:,} above")
print(f"{below:,} below")
print(f"{equal:,} equal")
這些片段使用cvs.DictReader. 您可以查看檔案以了解您可能需要如何編輯這些示例以滿足您的需求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/433946.html
上一篇:np.where未在新列上實作
下一篇:R讀取帶有=“”格式的csv
