python - 使用 Pandas 转置和创建平面文件
问题描述
我有下表
CODE LEV NAME
A00 3 text
A000 4 text
A001 4 text
A02 3 text
A022 4 text
A0220 5 text
A33 3 text
对于每个顶级 3,都有子级别 4、5、6 等。对于某些级别 3,没有子级别。我需要转置关卡并使用 pandas 创建一个像这样有意义的平面文件。
L3 L4 L5 NAME
A00 - - text
A00 A000 - text
A00 A001 - text
A02 - - text
A02 A022 - text
A02 A022 A0220 text
A33 - - text
解决方案
我可能会因此被处以私刑,但因为没有更好的答案 - 希望有帮助:-)
>>> df
CODE LEV NAME
1 A00 3 text
2 A000 4 text
3 A001 4 text
4 A02 3 text
5 A022 4 text
6 A0220 5 text
7 A33 3 text
>>> (df
...: .groupby(['LEV','NAME'])
...: .agg(list)
...: .reset_index()
...: .explode('CODE')
...: .reset_index()
...: .pivot_table(index=['index', 'NAME'],columns='LEV',values='CODE', aggfunc=list)
...: .reset_index()
...: .explode('3')
...: .explode('4')
...: .explode('5')
...: .drop_duplicates()
...: .reset_index()
...: .drop(['level_0','index'], axis=1)
...: .rename({'3': 'L3', '4': 'L4', '5': 'L5'}, axis=1)
...: .rename_axis(None, axis=1)
...: .fillna('-'))[['L3','L4','L5','NAME']]
L3 L4 L5 NAME
0 A00 - - text
1 A02 - - text
2 A33 - - text
3 - A000 - text
4 - A001 - text
5 - A022 - text
6 - - A0220 text
推荐阅读
- flutter - 是否可以从云端调用客户端代码(而不是使用推送通知或实时查询)
- amazon-web-services - 清单:行:1,列:1,Chrome 浏览器 React AWS Amplify 上的语法错误
- android - 使用图像路径从存储中获取图像,而不使用图像选择器在本机反应中
- postgresql - 在 Jboss 中测试数据库连接
- c - 克隆链表
- certificate - 新证书上的 Service Fabric 应用 Kestrel 证书轮换
- perl - 全局符号 "$global_var1" 需要在 module1.pm 明确的包名(你忘了声明 "my $global_var1" 吗?)
- javascript - 反应原生视图拍摄无法收到空消息
- reactjs - 尝试编辑表单时超过反应警告最大更新深度
- flutter - 我希望我的屏幕滚动在 alphabatescroll 视图中,但我有问题我的概念不起作用请给我建议