Python 删除多索引和自动重命名列

Python 删除多索引和自动重命名列,python,pandas,dataframe,group-by,multi-index,Python,Pandas,Dataframe,Group By,Multi Index,我想将以下输出转换为: 移除multiindexit应该只是一行索引 相应编号作业1、作业生效日期1、作业2、作业生效日期2等 我希望这是可伸缩的,如果我选择添加或删除其他变量,我不想修改代码以适应它,这是一个缩小的示例 一些数据: 尝试: 如果您同意基于0的索引。否则更改为列[0]+1尝试: df3.columns = ['{} {}'.format(col[1], col[0]) for col in df3.columns] 如果您同意基于0的索引。否则更改为列[0]+1另一个带有joi

我想将以下输出转换为:

移除multiindexit应该只是一行索引

相应编号作业1、作业生效日期1、作业2、作业生效日期2等

我希望这是可伸缩的,如果我选择添加或删除其他变量,我不想修改代码以适应它,这是一个缩小的示例

一些数据:

尝试:

如果您同意基于0的索引。否则更改为列[0]+1

尝试:

df3.columns = ['{} {}'.format(col[1], col[0]) for col in df3.columns]
如果您同意基于0的索引。否则更改为列[0]+1

另一个带有join的解决方案:

如果需要删除索引名,请在0.18.0中使用新名称:

工作原理:

列表理解将多索引转换为元组列表,元组列表由join连接,但首先需要添加1并将int转换为元组每个第一项的str:

print ([col for col in df.columns])
[(0, 'Job'), (0, 'Job Eff Date'), 
 (1, 'Job'), (1, 'Job Eff Date'), 
 (2, 'Job'), (2, 'Job Eff Date')]
输出是指定给列名的字符串列表:

print ([' '.join((col[1], str(col[0] + 1))) for col in df.columns])
['Job 1', 'Job Eff Date 1', 'Job 2', 'Job Eff Date 2', 'Job 3', 'Job Eff Date 3']
另一个带有join的解决方案:

如果需要删除索引名,请在0.18.0中使用新名称:

工作原理:

列表理解将多索引转换为元组列表,元组列表由join连接,但首先需要添加1并将int转换为元组每个第一项的str:

print ([col for col in df.columns])
[(0, 'Job'), (0, 'Job Eff Date'), 
 (1, 'Job'), (1, 'Job Eff Date'), 
 (2, 'Job'), (2, 'Job Eff Date')]
输出是指定给列名的字符串列表:

print ([' '.join((col[1], str(col[0] + 1))) for col in df.columns])
['Job 1', 'Job Eff Date 1', 'Job 2', 'Job Eff Date 2', 'Job 3', 'Job Eff Date 3']

明亮的它是有效的,但我不确定如何。。。我试着把它拆开。我认为括号是一个替换函数,但为什么只有两个呢?另外,.formatcol[1]-是指从多索引顶部向下的级别吗?最后,它是如何摆脱顶级索引的?@Christopher问了很多问题!我会尽力的。1.括号是一个,是Python最梦幻的特性之一。或者你是说那些花括号?它们+.format函数在Python中用于。3.在遍历df3.columns时,每个层次结构的名称将作为每个列的元组。我使用str..format.Brilliant将它们连接到一个名称!它是有效的,但我不确定如何。。。我试着把它拆开。我认为括号是一个替换函数,但为什么只有两个呢?另外,.formatcol[1]-是指从多索引顶部向下的级别吗?最后,它是如何摆脱顶级索引的?@Christopher问了很多问题!我会尽力的。1.括号是一个,是Python最梦幻的特性之一。或者你是说那些花括号?它们+.format函数在Python中用于。3.在遍历df3.columns时,每个层次结构的名称将作为每个列的元组。我使用str..format将它们连接到单个名称。
print ([' '.join((col[1], str(col[0] + 1))) for col in df.columns])
['Job 1', 'Job Eff Date 1', 'Job 2', 'Job Eff Date 2', 'Job 3', 'Job Eff Date 3']