首页 文章

熊猫到 Excel(合并标题栏)

提问于
浏览
6

我想将 df 转换为 Excel 工作表,还想添加标题列以对所有列进行分类。
这是没有合并列标题的屏幕截图

第二张图片显示了“金融”和“负债”标题

复制:

import pandas as pd
 # Create a Pandas dataframe from some data.
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1')

# Close the Pandas Excel writer and output the Excel file.
writer.save()

1 回答

  • 8

    您可以创建MultiIndex

    df = pd.DataFrame({
            'A':list('abcdef'),
             'B':[4,5,4,5,5,4],
             'C':[7,8,9,4,2,3],
             'D':[1,3,5,7,1,0],
             'E':[5,3,6,9,2,4],
             'F':list('aaabbb')
    })
    

    使用开始和结束列名称指定级别的新名称:

    L = [('OBS','A','C'), ('FIN', 'D','F')]
    

    然后在列表理解中为MultiIndex.from_tuples创建tuples

    cols = [(new, c) for new, start, end in L for c in df.loc[:, start:end].columns]
    
    print (cols)
    [('OBS', 'A'), ('OBS', 'B'), ('OBS', 'C'), ('FIN', 'D'), ('FIN', 'E'), ('FIN', 'F')]
    
    df.columns = pd.MultiIndex.from_tuples(cols)
    print (df)
      OBS       FIN      
        A  B  C   D  E  F
    0   a  4  7   1  5  a
    1   b  5  8   3  3  a
    2   c  4  9   5  6  a
    3   d  5  4   7  9  b
    4   e  5  2   1  2  b
    5   f  4  3   0  4  b
    

相关问题