簡體   English   中英

從字典以有效方式構建數據框

[英]Building a dataframe in an efficient way from dictionary

我有大量數據要處理並生成字典。 現在,我想從此字典創建一個數據框。 字典的值是元組列表。 從這些值中,我需要找出唯一的值來構建數據框的列:

d = {'0001': [('skiing',0.789),('snow',0.65),('winter',0.56)],'0002': [('drama', 0.89),('comedy', 0.678),('action',-0.42) ('winter',-0.12),('kids',0.12)],'0003': [('action', 0.89),('funny', 0.58),('sports',0.12)],'0004': [('dark', 0.89),('Mystery', 0.678),('crime',0.12), ('adult',-0.423)],'0005': [('cartoon', -0.89),('comedy', 0.678),('action',0.12)],'0006': [('drama', -0.49),('funny', 0.378),('Suspense',0.12), ('Thriller',0.78)],'0007': [('dark', 0.79),('Mystery', 0.88),('crime',0.32), ('adult',-0.423)]}

(詞典的大小接近80萬條記錄)

我遍歷字典以找出唯一的標頭:

col_headers = []
entities = []
for key, scores in d.iteritems():
    entities.append(key)
    d[key] = dict(scores)
    col_headers.extend(d[key].keys())
col_headers = list(set(col_headers))

我相信這需要很長時間才能完成。 由於使用dict速度要慢得多,因此也可能是個問題。 此外,當我通過原始方式構造數據幀時,它會進一步減慢該過程:

df = pd.DataFrame(columns=col_headers, index=entities)
for k in d:
    df.loc[k] = pd.Series(d[k])
df.fillna(0.0, axis=1)

如何加快該過程以減少處理時間?

@ajcr幾乎可以理解。

但是您可能還需要將內部鍵值對解包到字典中。

df = pd.DataFrame.from_dict({ k: dict(v) for k,v in d.items() },  
                            orient="index").fillna(0)

然后,如果要使列標題的樣式同質,則可以選擇:

df.columns = [c.lower() for c in df.columns]

在此處輸入圖片說明

如果您想完全瘋掉,則可以對各列進行排序:

df = df.sort(axis=1)

在此處輸入圖片說明

暫無
暫無

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

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