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

如何将行列交替的Pandas DataFrame转换为标准列值格式?

Pandas长格式转标准宽格式解决方案

假设你的原始Pandas DataFrame为单列结构(列名暂定为data):偶数行存储列名,奇数行存储对应值,每32个列名-值对构成一行目标数据,总行数约10万。以下是高效的转换方法:

方法一:基于Numpy重塑(推荐,处理大数据更快)

import pandas as pd
import numpy as np

# 原始DataFrame为df,单列名为'data'
# 将数据转为一维数组,按每64行(32组列名-值对)拆分
reshaped = df['data'].values.reshape(-1, 64)

# 提取列名(取第一组的偶数位置元素,因列名重复)
col_names = reshaped[0, ::2]
# 提取每行对应的值(所有组的奇数位置元素)
row_values = reshaped[:, 1::2]

# 生成标准宽格式DataFrame
result = pd.DataFrame(row_values, columns=col_names)

优势说明

Numpy的reshape是向量化操作,处理10万行数据几乎瞬间完成,比循环或逐行拼接效率高几个数量级。如果你的原始列名不是data,替换为实际列名即可。

方法二:分组透视(适用于列名不固定的场景)

如果不同数据组的列名存在差异,可采用分组透视的方式:

# 为每个列名-值对分配ID,每32对划为一个数据组
df['pair_id'] = np.arange(len(df)) // 2
df['group_id'] = df['pair_id'] // 32

# 透视生成宽表,筛选出值列
pivot_result = df.pivot(index='group_id', columns='pair_id', values='data')
result = pivot_result.iloc[:, 1::2]

# 为结果表匹配对应列名
result.columns = df[df['pair_id'] % 2 == 0].groupby('group_id')['data'].first().values

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:05:38