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

如何让Pandas DataFrame在页面中以多列形式展示数据?

将长窄Pandas DataFrame转为多列重复排列的实现方法

要实现把长窄的(year, number)列重复排列成多组横向列的效果,可以通过分组标识+透视表的方式完成,具体步骤如下:

1. 构造示例数据(模拟你的原始DataFrame)

import pandas as pd
import numpy as np

# 生成1950-2017的年份序列
years = range(1950, 2018)
# 随机生成对应number值(可替换为你的真实数据)
numbers = np.random.randint(0, 300, size=len(years))

df = pd.DataFrame({'year': years, 'number': numbers})

2. 添加分组与位置标识

先设定每组包含的行数(比如示例中每组5行),给每行分配对应的组号和组内位置:

# 设定每组行数,可根据需求调整
group_size = 5

# 生成组号:每group_size行划分为一组
df['group'] = df.index // group_size
# 生成组内位置索引(0到group_size-1)
df['pos'] = df.index % group_size

3. 透视转换为多列结构

通过pivot方法将分组数据转为横向列,再调整列的顺序和命名:

# 透视表:以组内位置为行,组号为列,提取year和number值
pivoted = df.pivot(index='pos', columns='group', values=['year', 'number'])

# 交换列层级,让同一组的year、number相邻
pivoted = pivoted.swaplevel(axis=1).sort_index(axis=1)

# 重命名列,保持year/number重复的格式
pivoted.columns = [col[1] for col in pivoted.columns]

4. 处理末尾不足组的空值(可选)

如果总行数不是group_size的整数倍,末尾行会出现NaN,可替换为你需要的占位符(比如示例中的---):

# 将NaN替换为'---',注意此操作会将数值转为字符串类型
result = pivoted.fillna('---')

最终效果

运行上述代码后,result就是你需要的多组(year, number)列横向排列的表格结构,每行对应原数据中不同组的同位置行。


内容的提问来源于stack exchange,提问作者Tim O'Brien

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:20:37