如何复制Pandas DataFrame的N级索引列并保留所有子表头?
适配任意层级表头的Pandas列复制需求
编辑说明
需解决N=1时生成普通索引DataFrame,N>1时生成多级索引(MultiIndex)DataFrame的差异问题。
背景
从CSV读取含N级表头的数据集,N≥1。
N=1时的示例
df = pd.read_csv(file, header=[0:N]) print(df)
输出:
A B C --------------- 普通索引DataFrame 0 1 2 3 1 4 5 6 2 7 8 9 ...
N=3时的示例
df = pd.read_csv(file, header=[0:N]) print(df)
输出:
A B C a b c ɑ β 𝛾 --------------- 多级索引DataFrame 0 1 2 3 1 4 5 6 2 7 8 9 ...
需求
将指定列(如A列)复制为新列D,保留该列所有层级的表头,且适配任意N值。期望输出示例:
A B C D ...N级表头行... a b c a ɑ β 𝛾 ɑ ---------------------- 0 1 2 3 1 1 4 5 6 4 2 7 8 9 7 ...
现有方案
基于此前的思路,可处理固定N值的场景,例如N=2时:
df[('D', df['A'].columns[0])] = df['A']
但该方案无法适配普通索引DataFrame,因为此时df['A']是Series类型,没有.columns属性。
扩展需求
目前通过if分支分别处理N=1和N≥2的情况,实现不够优雅,希望找到更Pythonic的实现方式,比如先将普通索引DataFrame转换为单级的多级索引DataFrame,再统一处理列复制逻辑。
内容的提问来源于stack exchange,提问作者SchtungDung
相关产品推荐
相关产品推荐

