add*_*ons 0 python dictionary dataframe python-2.7 pandas
我有大量的数据,我已经处理并生成了一个字典.现在我想从这本词典中创建一个数据框.字典的Vales是元组列表.从这些值我需要找出构建数据帧列的唯一值:
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)]}
Run Code Online (Sandbox Code Playgroud)
(字典大小接近800,000条记录)
我遍历字典以找出唯一的标题:
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))
Run Code Online (Sandbox Code Playgroud)
我相信这需要很长时间才能完成.使用dict也可能是一个问题,因为它慢得多.当我通过raw构建数据框raw时,它进一步减慢了进程:
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)
Run Code Online (Sandbox Code Playgroud)
如何加快此过程以缩短处理时间?
但是您可能还需要将内部键值对解包到字典中.
df = pd.DataFrame.from_dict({ k: dict(v) for k,v in d.items() },
orient="index").fillna(0)
Run Code Online (Sandbox Code Playgroud)
然后可选地,如果您想要使列标题的样式均匀化:
df.columns = [c.lower() for c in df.columns]
Run Code Online (Sandbox Code Playgroud)

如果你想完全疯狂,你可以对列进行排序:
df = df.sort(axis=1)
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |