从具有可变长度的列表字典创建数据框
Posted
技术标签:
【中文标题】从具有可变长度的列表字典创建数据框【英文标题】:Create dataframe from dictionary of list with variable length 【发布时间】:2019-03-20 00:31:39 【问题描述】:我有一个列表字典,就像 -
from collections import defaultdict
defaultdict(list,
'row1': ['Affinity'],
'row2': ['Ahmc',
'Garfield',
'Medical Center'],
'row3': ['Alamance','Macbeth'],
'row4': [],
'row5': ['Mayday'])
我想将其转换为数据框。 输出应该看起来像-
ID SYN1 SYN2 SYN3 SYN4 SYN5
row1 Affinity
row2 Ahmc Garfield Medical Center
row3 Alamance Macbeth
row4
row5 Mayday
【问题讨论】:
你能解释一下“值的可变长度是变化的”是什么意思吗? 听到“第 2 行”包含 3 个值。而“第 1 行”只有 1 个。 【参考方案1】:collections.defaultdict
是dict
的子类。
所以你可以使用pd.DataFrame.from_dict
:
res = pd.DataFrame.from_dict(dd, orient='index')
res.columns = [f'SYNi+1' for i in res]
print(res)
SYN1 SYN2 SYN3
row1 Affinity None None
row2 Ahmc Garfield Medical Center
row3 Alamance Macbeth None
row4 None None None
row5 Mayday None None
【讨论】:
【参考方案2】:是的,您可以使用Series
df=pd.Series(d).apply(pd.Series).fillna('')
Out[55]:
0 1 2
row1 Affinity
row2 Ahmc Garfield Medical Center
row3 Alamance Macbeth
row4
row5 Mayday
或来自数据框构造函数
df=pd.DataFrame(data=list(d.values()),index=d.keys())
Out[64]:
0 1 2
row1 Affinity None None
row2 Ahmc Garfield Medical Center
row3 Alamance Macbeth None
row4 None None None
row5 Mayday None None
然后我们创建列
df.columns='SYN'+(df.columns+1).astype(str)
df
Out[67]:
SYN1 SYN2 SYN3
row1 Affinity None None
row2 Ahmc Garfield Medical Center
row3 Alamance Macbeth None
row4 None None None
row5 Mayday None None
【讨论】:
以上是关于从具有可变长度的列表字典创建数据框的主要内容,如果未能解决你的问题,请参考以下文章