python - 有没有办法从 pandas python 中的列名中的分隔符创建列的层次结构?
问题描述
我有一个包含 500 多列的数据集,它们看起来最初位于已展平的层次结构中,并且它们的新标题已与下划线连接(参见下面的示例)。
有没有办法拉出每个级别并重新创建层次结构?
这是数据集中某些列的示例:
['CEO_FEM_CAS', 'CEO_FEM_FTCONT', 'CEO_FEM_FTPERM', 'CEO_FEM_PTCONT', 'CEO_FEM_PTPERM', 'CEO_MAL_CAS', 'CEO_MAL_FTCONT', 'CEO_MAL_FTPERM', 'CEO_MAL_PTCONT', 'CEO_MAL_PTPERM','KMP_FEM_CAS','KMP_FEM_FTCONT','KMP_FEM_FTPERM','KMP_FEM_PTCONT','KMP_FEM_PTPERM','KMP_MAL_CAS','KMP_MAL_FTCONT','KMP_MAL_FTPERM','KMP_MAL_PTCONT_'MALMP_K
我想要得到的层次结构是:
Desired Hierarchy of Columns
解释: CEO和KMP是0级,FEM和MAL是1级,CAS、FTCONTRACT、FTPERM、PTCONT、PTPERM是2级
我希望能够在 Python 中的 Pandas 中实现这一点,但如果有一种简单的方法,我也对 R 持开放态度。
预先感谢您的任何帮助!
解决方案
您可以在 pandas 中创建一个multiIndex,如下所示:
import pandas as pd
column_names = [
'CEO_FEM_CAS', 'CEO_FEM_FTCONT', 'CEO_FEM_FTPERM', 'CEO_FEM_PTCONT',
'CEO_FEM_PTPERM', 'CEO_MAL_CAS', 'CEO_MAL_FTCONT', 'CEO_MAL_FTPERM',
'CEO_MAL_PTCONT', 'CEO_MAL_PTPERM', 'KMP_FEM_CAS', 'KMP_FEM_FTCONT',
'KMP_FEM_FTPERM', 'KMP_FEM_PTCONT', 'KMP_FEM_PTPERM', 'KMP_MAL_CAS',
'KMP_MAL_FTCONT', 'KMP_MAL_FTPERM', 'KMP_MAL_PTCONT', 'KMP_MAL_PTPERM',]
first_part = []
second_part = []
third_part = []
for column_name in column_names:
split_column_name = column.split('_')
first_part.append(split_column_name[0])
second_part.append(split_column_name[1])
third_part.append(split_column_name[2])
df = pd.DataFrame(columns=[first_part, second_part, third_part])
推荐阅读
- python - 如何使用 python 根据 pdf 文本的标题将我的文本字符串拆分为多个部分?
- javascript - 如何将空对象添加到本机构造函数对象
- ios - Swift - 在“应用”按钮单击时保存带有选中按钮的表格视图单元
- python - 如何在matplotlib(python)中组合组图
- node.js - 无法将数据保存到 mongodb
- javascript - Owl Carousel 在主机上的 chrom 上不工作
- tfs - 如何在 TFS Build 中设置变量组变量的值
- node.js - req.login 出现错误,未定义(节点护照登录错误)
- node.js - 如何将 .log 文件流式传输到 Angular 6 前端
- html - 添加 json 代码后 CSS 语法不起作用 - VSCode