You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将三维xarray转换为指定结构的DataFrame并导出为Excel表格

解决方法

你可以通过调整DataFrame的层级索引结构,将patient和day作为多级列索引、parameter作为行索引,导出后就会符合你期望的Excel多层表头结构,具体代码如下:

import numpy as np
import pandas as pd
import xarray as xr

# 原有xarray构建代码
data_np = np.array([ 
                [ [1, 2, 0, 8], [3, 4, 11, 2], [5, 6, 43, 90] ],
                [ [7, 8, 2, 66], [9, 10, 31, 21], [11, 12, 56, 45] ] 
                ])
dims = ['patient', 'parameter', 'day']
coords = {'patient':['Joe','Bill'], 'parameter':['a', 'b', 'c'], 'day':[0, 1, 2, 3]}
data = xr.DataArray(data_np, dims = dims, coords = coords )

# 转换为符合导出结构的DataFrame
df = data.to_dataframe('value')
# 将patient和day从行索引移动到列索引,形成多级列
df = df.unstack(level=['patient', 'day'])
# 去掉列索引最外层的value层级
df = df.droplevel(0, axis=1)

# 导出Excel,多级表头会自动合并
with pd.ExcelWriter("main.xlsx") as writer: 
    df.to_excel(writer, merge_cells=True)

代码说明

  • unstack(level=['patient', 'day']):将原本在多级行索引中的patient和day移动到列方向,形成两级列索引
  • droplevel(0, axis=1):移除转换后自动生成的最外层value列索引,保留patient和day两级表头
  • to_excel默认开启merge_cells=True,导出的Excel会自动合并相同patient的表头单元格,和期望结构完全一致。

内容的提问来源于stack exchange,提问作者DavideL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:09:03