
本文详细介绍了如何将具有大量水平列的Pandas DataFrame重塑为更紧凑、垂直的格式。我们探讨了两种主要方法:一种是利用NumPy的`reshape`功能,适用于列数能被目标组数整除的情况;另一种是结合Pandas的`MultiIndex`和`stack`操作,以应对列数不能完美整除的场景,并提供了详细的代码示例和注意事项,旨在帮助用户高效地进行数据重塑。
在数据分析和处理中,我们经常会遇到宽度过大的DataFrame,即拥有非常多列的数据集。这种“宽格式”数据在某些分析场景下可能难以理解和操作。例如,一个包含600多列的CSV文件,如果每6列代表一组相关数据,我们可能希望将其重塑为只有6列的“长格式”数据,其中原始的列被堆叠成行。本文将详细介绍两种有效的方法来解决这一问题。
当原始DataFrame的总列数能够被目标列数(例如,每6列一组)完美整除时,NumPy的reshape方法提供了一种高效且简洁的解决方案。
假设我们有一个名为groups.csv的文件,其中包含606列,我们希望将其重塑为6列,每6列一组。
import pandas as pd
import numpy as np
# 模拟一个宽格式DataFrame
# 实际应用中,您会从CSV文件加载
# df = pd.read_csv("groups.csv")
# 模拟数据,3行12列,用于演示
np.random.seed(123)
df = pd.DataFrame(np.random.randint(10, size=(3, 12)))
print("原始DataFrame:")
print(df)
print(f"\n原始DataFrame的列数: {len(df.columns)}")
print(f"列数 % 6 的余数: {len(df.columns) % 6}")
# 目标列名
target_columns = ['GroupA', 'GroupB', 'GroupC', 'GroupD', 'GroupE', 'GroupF']
# 使用to_numpy()转换为NumPy数组,然后进行reshape
# -1 让NumPy自动计算行数
df_target = pd.DataFrame(df.to_numpy().reshape(-1, 6),
columns=target_columns)
print("\n重塑后的DataFrame (使用NumPy reshape):")
print(df_target)输出示例:
原始DataFrame: 0 1 2 3 4 5 6 7 8 9 10 11 0 2 2 6 1 3 9 6 1 0 1 9 0 1 0 9 3 4 0 0 4 1 7 3 2 4 2 7 2 4 8 0 7 9 3 4 6 1 5 原始DataFrame的列数: 12 列数 % 6 的余数: 0 重塑后的DataFrame (使用NumPy reshape): GroupA GroupB GroupC GroupD GroupE GroupF 0 2 2 6 1 3 9 1 6 1 0 1 9 0 2 0 9 3 4 0 0 3 4 1 7 3 2 4 4 7 2 4 8 0 7 5 9 3 4 6 1 5
当原始DataFrame的列数不能被目标列数完美整除时,或者需要更灵活地处理列分组时,Pandas的MultiIndex结合stack操作提供了一个更强大的解决方案。此方法能够处理不规则的列数,并在必要时填充NaN。
6pen Art
AI绘画生成
213
查看详情
假设我们有一个3行10列的DataFrame,我们仍希望将其重塑为6列。
import pandas as pd
import numpy as np
# 模拟一个宽格式DataFrame,列数不被6整除
np.random.seed(123)
df = pd.DataFrame(np.random.randint(10, size=(3, 10)))
print("原始DataFrame:")
print(df)
print(f"\n原始DataFrame的列数: {len(df.columns)}")
print(f"列数 % 6 的余数: {len(df.columns) % 6}")
# 目标列名
target_columns = ['GroupA', 'GroupB', 'GroupC', 'GroupD', 'GroupE', 'GroupF']
# 创建一个表示列分组的MultiIndex
# a % 6: 0,1,2,3,4,5,0,1,2,3 (每组内的列索引)
# a // 6: 0,0,0,0,0,0,1,1,1,1 (组编号)
a = np.arange(len(df.columns))
df_target = (df.set_axis([a % 6, a // 6], axis=1) # 设置MultiIndex作为列名
.stack() # 堆叠数据
.set_axis(target_columns, axis=1) # 设置新的列名
.reset_index(drop=True)) # 重置索引
print("\n重塑后的DataFrame (使用MultiIndex和stack):")
print(df_target)输出示例:
原始DataFrame: 0 1 2 3 4 5 6 7 8 9 0 2 2 6 1 3 9 6 1 0 1 1 9 0 0 9 3 4 0 0 4 1 2 7 3 2 4 7 2 4 8 0 7 原始DataFrame的列数: 10 列数 % 6 的余数: 4 重塑后的DataFrame (使用MultiIndex和stack): GroupA GroupB GroupC GroupD GroupE GroupF 0 2 2 6 1 3.0 9.0 1 6 1 0 1 NaN NaN 2 9 0 0 9 3.0 4.0 3 0 0 4 1 NaN NaN 4 7 3 2 4 7.0 2.0 5 4 8 0 7 NaN NaN
将宽格式的DataFrame重塑为长格式是数据预处理中的常见任务。选择哪种方法取决于您的具体数据特征和需求:
理解并熟练运用这两种技术,将极大地提高您在数据清洗和准备阶段的效率。务必根据您的数据特点和分析目标,选择最合适的重塑策略。
以上就是如何将宽格式数据框重塑为更易读的垂直格式的详细内容,更多请关注其它相关文章!
# 详细介绍
# 概念型海报文案网站推广
# 泰安推广线上营销方案
# 宁波seo系统开发
# 固始本地网站建设平台
# 小说的seo
# fiam seo锁体
# 唐山市seo优化
# 密云快速优化网站
# 象山高端网站建设
# 湘桥网站建设公司
# 易读
# csv
# 两种
# 每组
# 您的
# 适用于
# 如何将
# 浮点
# 转换为
# 将其
# csv文件
# 数据清洗
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
如何在解析前预检查XML文件的完整性? 比如检查文件大小或特定结束标签
Win10输入法不见了怎么办 Win10找回语言栏图标教程
哔哩哔哩的|直播|间怎么送礼物_哔哩哔哩|直播|送礼操作指南
如何解决Casbin日志与应用日志不统一的问题,使用casbin/psr3-bridge实现无缝集成
优化长HTML属性值:SonarQube警告与实用策略
外卖小程序对接第三方配送
win11怎么设置默认终端为Windows Terminal Win11替代CMD和PowerShell【技巧】
海外搜索引擎推广效果怎么样,怎么分析效果!
飞飞漫画漫画阅读官网_飞飞漫画漫画阅读官网进入阅读
小红书如何引流到私信?引流到私信有用吗?
作业帮网页版不用下载入口 在线问老师快速答疑
Flash AS3.0简易相册制作
《豆瓣》私信用户方法
b站怎么查看视频的码率_b站视频码率查看方法
谷歌邮箱官方入口链接 谷歌邮箱网页版电脑端快速登录
Composer如何使用composer-plugin-api开发自定义插件
J*a中逻辑运算符如何使用_逻辑与或非的基础用法讲解
Win11怎么设置分辨率 Win11显示设置调整分辨率及刷新率修改
画质怪兽120帧安卓和平精英免费版
PHP 4 函数中引用参数的默认值限制与解决方案
C++如何使用CMake构建项目_C++ CMakeLists.txt编写入门教程
申通快件单号查询平台 申通包裹物流动态跟踪
Apple Music无故扣费引质疑
mysql中外键约束如何使用_mysql FOREIGN KEY操作
如何在mysql中使用索引提示_mysql索引提示优化方法
Sublime怎么快速复制文件路径_Sublime右键菜单增强技巧
Win10如何彻底关闭OneDrive Win10禁用云同步功能【纯净】
《深林》冬季章节图文攻略
HTML中多图片上传与预览:解决ID冲突的专业指南
优化 WooCommerce 产品价格显示与自定义短代码集成
第五人格PC版怎么避免被封号_第五人格PC版防封号注意事项
铁路12306买票怎么选双人铺 铁路12306卧铺分配规则说明
J*aScript文本高亮功能优化:解决多词匹配错误与精确分割策略
《全民k歌》音乐怎么下载到本地2025
小红书网页版在线直达 小红书网页版免费登录入口
自定义你的VS Code状态栏,监控关键信息
如何定制PrimeNG Sidebar的背景颜色
嘴唇干裂起皮怎么办 唇部护理与预防干裂的方法【详解】
VS Code中的Tailwind CSS IntelliSense插件使用技巧
抖音火山版如何进行提现
使用VS Code作为你的个人知识管理系统
电脑桌面图标怎么变大变小_Windows个性化设置第一课【新手入门】
CSS过渡与滚动滚动事件结合应用_scroll与transition动画
《随手记》备份数据方法
b站怎么设置动态仅粉丝可见_b站动态粉丝可见设置方法
Firefox OS应用开发:解决XMLHttpRequest跨域请求阻塞问题
iphone16系列配置参数介绍
Python自动化抓取GBGB赛狗比赛结果:日期范围与赛道筛选教程
Cassandra中复合主键、二级索引与ORDER BY排序的限制与解决方案
厨房地面防滑垫的油污怎么洗? 机洗和手洗防滑垫的注意事项
2025-10-25
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。