Python Pandas 如何将宽表数据转换为长表并提取列名中的步骤信息?

聖光之護
发布: 2025-03-01 15:50:01
原创
908人浏览过

python pandas 如何将宽表数据转换为长表并提取列名中的步骤信息?

利用Python Pandas高效处理宽表数据:长表转换及列名信息提取

在数据分析领域,宽表数据向长表数据的转换是常见需求。本文将结合实际案例,演示如何使用Python的Pandas库实现这一转换,并同时提取嵌套在列名中的步骤信息。

问题描述:

假设您拥有一个包含多个步骤(step)数据的宽表数据框。每个步骤包含多个指标(例如nm_stdedev),这些指标在每个步骤中都存在。列名格式遵循"stepx_指标名"模式,其中x代表步骤编号(例如4、6、8、9)。目标是将此宽表转换为长表,包含"step"列表示步骤编号,以及包含所有指标的列(例如nm_stdedev)。所有步骤的指标列名保持一致。

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

解决方案:

我们将使用Pandas的melt函数和字符串操作来解决这个问题。 以下代码基于一个示例数据框,假设包含四个步骤和两个指标(nm_stdedev和nm_mean):

import pandas as pd

data = {'step4_nm_stdedev': [1, 2, 3, 4],
        'step4_nm_mean': [5, 6, 7, 8],
        'step6_nm_stdedev': [9, 10, 11, 12],
        'step6_nm_mean': [13, 14, 15, 16],
        'step8_nm_stdedev': [17, 18, 19, 20],
        'step8_nm_mean': [21, 22, 23, 24],
        'step9_nm_stdedev': [25, 26, 27, 28],
        'step9_nm_mean': [29, 30, 31, 32]}

df = pd.DataFrame(data)

# 使用melt函数将宽表转换为长表
df_melted = pd.melt(df, var_name='step_metric', value_name='value')

# 从'step_metric'列中提取步骤和指标信息
df_melted[['Step', 'Metric']] = df_melted['step_metric'].str.split('_', expand=True)
df_melted['Step'] = df_melted['Step'].str.replace('step', '', regex=False).astype(int)

# 显示转换后的长表数据
print(df_melted)
登录后复制

这段代码首先使用melt函数将宽表数据转换为长表,然后利用字符串的split方法将'step_metric'列拆分为'Step'和'Metric'两列。最后,去除'Step'列中的前缀"step"并将其转换为整数类型。 即使指标数量超过两个,此方法仍然有效,前提是所有列名都遵循一致的命名模式。

通过以上步骤,我们成功地将宽表数据转换为长表,并提取了列名中包含的步骤信息,方便后续的数据分析和处理。

以上就是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号