Python数据整理:如何用pandas将多列数据转换为长格式并提取列名信息?

碧海醫心
发布: 2025-03-01 15:36:15
原创
589人浏览过

python数据整理:如何用pandas将多列数据转换为长格式并提取列名信息?

利用Pandas高效处理多列数据,将其转换为长格式并提取关键信息!本文将演示如何使用Python的Pandas库,将宽格式数据(例如包含多个步骤数据,如step 4, step 6, step 8等,以及对应的n列数据)转换为长格式,并提取列名前缀作为新列。

问题描述:

假设您拥有一个数据集,其中包含多个步骤(step)的数据。每个步骤对应多列数据,例如step 4 nm_stdedev,step 6 nm_stdedev,step 8 nm_stdedev等等。这些列名中的数字代表步骤编号,nm_stdedev部分代表相同的测量指标。目标是将这些数据转换为长格式,包含步骤编号(step)、测量指标(nm_stdedev)和对应的数据值。

解决方案:

立即学习Python免费学习笔记(深入)”;

Pandas的melt函数是解决此问题的理想工具。以下代码演示了如何使用melt函数进行数据转换,并提取列名信息:

import pandas as pd

# 示例数据 (请替换为您的实际数据)
data = {'Step 4 nm_Stdedev': [1, 2, 3, 4],
        'Step 6 nm_Stdedev': [5, 6, 7, 8],
        'Step 8 nm_Stdedev': [9, 10, 11, 12],
        'Step 9 nm_Stdedev': [13, 14, 15, 16]}
df = pd.DataFrame(data)

# 使用melt函数转换数据
df_melted = pd.melt(df, var_name='Step_nm_Stdedev', value_name='Value')

# 提取步骤编号和测量指标 (使用正则表达式更灵活)
df_melted['Step'] = df_melted['Step_nm_Stdedev'].str.extract(r'Step (\d+)').astype(int)
df_melted['Measurement'] = df_melted['Step_nm_Stdedev'].str.extract(r'Step \d+ (.*)').fillna('nm_Stdedev')

# 删除中间列
df_melted = df_melted.drop(columns=['Step_nm_Stdedev'])

print(df_melted)
登录后复制

这段代码首先使用melt函数将宽格式数据转换为长格式。然后,利用正则表达式r'Step (\d+)'提取步骤编号,并用r'Step \d+ (.*)'提取测量指标,fillna('nm_Stdedev')处理可能缺失的测量指标。最后,删除了临时列Step_nm_Stdedev。 通过调整正则表达式,可以轻松适应不同的列名模式。 如果nm_stdedev部分也存在变化,需要修改正则表达式以提取更通用的指标信息。

此方法提供了一种更灵活、更健壮的解决方案,能够处理更复杂的列名结构,避免了硬编码,提高了代码的可重用性。

以上就是Python数据整理:如何用pandas将多列数据转换为长格式并提取列名信息?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号