我正在處理(未排序的)CSV 檔案,其中某些列包含一個key,而另一列是value。假設每行的列 (1, 2, 3, 7) 構成鍵,第 11 列是行的值。
我想將這些加載到哈希中,以便能夠快速訪問鍵的值。我是 NumPy 的新手,對 NumPy 的速度和易用性印象最深numpy.loadtxt()——我可以準確地給出我感興趣的列,并且它可以快速加載非常大的 CSV 檔案。
但它會將它們加載到一個平面ndarray中——而不是字典。我如何以與 類似的速度和易用性獲得類似哈希的東西loadtxt()?
在 Python中一次讀取一行——例如使用csv-package——很慢。回圈ndarray將資料復制到哈希中既慢又浪費。
也許還有其他一些快速的單線?或者巧妙地使用相同的loadtxt(),這將產生一個帶有 $O(log(n))$ 查找的哈希(或類似哈希)物件?
uj5u.com熱心網友回復:
你可以試試:
d = pd.read_csv('data.txt', header=None, usecols=[1, 2, 3, 7, 11],
index_col=[0, 1, 2, 3], sep=' ')[11].to_dict()
一些資訊:
header=None: 將第一行視為資料而不是列名usecols=[1, 2, 3, 7, 11]: 只選擇有用的列index_col=[0, 1, 2, 3]:將第 1、2、3、7 列定義為索引(鍵)sep=' ':這是默認的分隔符loadtxt[11]:提取值列.to_dict(): 轉換你的seriesasdict
uj5u.com熱心網友回復:
Python 內置了這種能力:
import csv
read_data =[]
with open('data.txt', 'r') as fin:
reader = csv.DictReader(sep=' ')
for line in reader:
read_data.append([line[1], line[2], line[3], line[7], line[11]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/478334.html
