dict = {'0': ['hu'],
'1':['yi'],
'2':['yu', 'song'],
'3':['zhou', 'liu', 'wang']}
这是一个简单的字典,我想在熊猫中创建如下格式的数据框。因为这种格式可以帮助我在networkx中加载图关系。
0 hu
1 yi
2 yuan
2 song
3 zhou
3 liu
3 wang
答案 0 :(得分:3)
您可以先将字典转换为元组列表:
final_arr=[(x, val) for x,y in d.items() for val in y ] #dict renamed as d
final_arr
[('0', 'hu'),
('1', 'yi'),
('2', 'yu'),
('2', 'song'),
('3', 'zhou'),
('3', 'liu'),
('3', 'wang')]
然后使用DataFrame类制作数据框:
df = pd.DataFrame(final_arr)
df
0 1
0 0 hu
1 1 yi
2 2 yu
3 2 song
4 3 zhou
5 3 liu
6 3 wang
答案 1 :(得分:3)
请注意,请勿将“ dict”用作变量名。在此示例中,我已重命名为“ d”。
使用:
pd.DataFrame.from_dict(d, orient='index').stack().reset_index(level=1, drop=True)
或替代方法:
pd.DataFrame([(k,x) for k, v in d.items() for x in v]).set_index(0)
答案 2 :(得分:2)
由于您是熊猫的新手,所以我为您提供了易于阅读的代码。
由于熊猫的DataFrame对象需要两个大小相同的列表,如下所示:
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df
col1 col2
0 1 3
1 2 4
我们将最初是空的列表设为空:
numb_list=[]
text_list=[]
然后,我们遍历您的dict,每次列表包含一个项目时,我们都保存其dict键及其值,并通过pop将其从同一列表中删除。
for i in dict:
while (len(dict[i]) >= 1):
numb_list.append(i)
text_list.append(dict[i].pop())
最后,我们可以像这样使用DataFrame对象:
d = {'number': numb_list, 'text': text_list}
df = pd.DataFrame(data=d)