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

如何在Jupyter中将单列Pandas DataFrame多行内容拆分为多列显示

解决单列Pandas DataFrame拆分为多列展示的问题

嘿,这个需求我太熟悉了!要把单列的长列表DataFrame拆成多列展示,其实用Pandas结合简单的数组重塑就能轻松实现,我给你两种实用的方案:

方法一:结合numpy重塑(推荐,简洁高效)

这种方法利用numpy的reshape功能快速转换数据结构,代码非常简洁:

import pandas as pd
import numpy as np

# 你的原始DataFrame
df = pd.DataFrame([ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'aa', 'ab', 'ac', 'ad'], columns=['value'])

# 定义要拆分的列数(这里按你的示例设为3列)
num_columns = 3
# 计算每列的行数(30行/3列=10行每列)
rows_per_column = len(df) // num_columns

# 重塑数据并生成新的DataFrame
split_df = pd.DataFrame(
    df['value'].values.reshape(num_columns, rows_per_column).T,
    columns=['value'] * num_columns
)

# 在Jupyter里直接输出即可看到多列效果
split_df

原理说明:

  1. 先把原始列的取值转换成numpy数组,用reshape(num_columns, rows_per_column)把30个元素变成3行10列的数组
  2. 用.T转置成10行3列的结构,刚好对应你要的展示格式
  3. 最后把转置后的数组转成DataFrame,重复设置列名为value就完成了

方法二:纯Pandas切片拼接(无需依赖numpy)

如果你不想引入numpy,用Pandas的切片和拼接功能也能实现:

import pandas as pd

# 原始DataFrame同上
df = pd.DataFrame([ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'aa', 'ab', 'ac', 'ad'], columns=['value'])

num_columns = 3
rows_per_column = len(df) // num_columns

# 循环切片并拼接列
split_df = pd.concat(
    [
        df['value'].iloc[i*rows_per_column : (i+1)*rows_per_column].reset_index(drop=True)
        for i in range(num_columns)
    ],
    axis=1
)

# 设置列名
split_df.columns = ['value'] * num_columns

split_df

原理说明:

  1. 用列表推导式循环切分原始列,每次切出rows_per_column行的数据
  2. 用reset_index(drop=True)重置每个切片的索引,避免拼接后出现索引不匹配的缺失值
  3. 用pd.concat(..., axis=1)按列拼接所有切片,最后统一设置列名

两种方法都能得到你想要的展示效果,在Jupyter Notebook里直接输出split_df就会以多列形式呈现啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 10:32:40