首页 > 解决方案 > Pandas 从 dict 将元组转换为索引创建数据框

问题描述

有没有方便的方法来实现一个功能make_dataframe,使用如下

mydict = {
    ('tom', 'gray') : [1,2,3,4,5],
    ('bill', 'ginger') : [6,7,8,9,10],
}

make_dataframe(mydict, tupleLabels=['catname', 'catcolor'], valueLabel='weight')

预期结果

| catname | catcolor | weight |
| tom | gray | 1 |
| tom | gray | 2 |
| tom | gray | 3 |
| tom | gray | 4 |
| tom | gray | 5 |
| bill | ginger | 6 |
| bill | ginger | 7 |
| bill | ginger | 8 |
| bill | ginger | 9 |
| bill | ginger | 10 |

听起来不太难,我只是不想重新发明轮子

标签: pythonpandas

解决方案


unstack使用以下命令重命名标签后,您可以使用数据框创建自己的函数rename_axis

def make_dataframe(dictionary , tupleLabels , valueLabel):
    return (pd.DataFrame(dictionary).rename_axis(tupleLabels,axis=1)
            .unstack().reset_index(tupleLabels,name=valueLabel))

out = make_dataframe(mydict, tupleLabels=['catname', 'catcolor'], valueLabel='weight')

print(out)

  catname catcolor  weight
0     tom     gray       1
1     tom     gray       2
2     tom     gray       3
3     tom     gray       4
4     tom     gray       5
0    bill   ginger       6
1    bill   ginger       7
2    bill   ginger       8
3    bill   ginger       9
4    bill   ginger      10

推荐阅读