python - 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 |
听起来不太难,我只是不想重新发明轮子
解决方案
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
推荐阅读
- java - 如何在会话中存储 Spring Boot OAuth2 登录用户?
- c++ - 在 PWM 正确相位模式和预分频器 1:1 下操作时如何同步 ATmega 328 Timer1、Timer2 和 Timer3
- python - 如何修复python整洁openai复古中的配置错误
- php - 如何使用 AES/Cryptography 和 Scribe Online API 和 PHP 加密文本
- javascript - 加载应用程序时未通过 AsyncStorage 更新状态
- node.js - 从 mongodb 获取大量数据(~20000 项)并将其显示在 Angular 7 管理产品页面中
- javascript - 接收错误 - 实现 React Spring 基本示例时,只能在函数组件的主体内部调用 Hooks
- android - Android - 这些值对于应用程序是否正常?
- c - 程序不扫描数字 149,对于任何其他数字它返回 0
- react-native - 如何使用 ES6 在 render() 中映射存储在 Redux 中的对象数组