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

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函数进行数据转换,并提取列名信息:

  1. 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将多列数据转换为长格式并提取列名信息?的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    编程技术

    猎聘网爬虫为何有时显示动态加载,有时显示静态加载?

    2025-3-5 18:46:09

    编程技术

    Python方法究竟属于哪个类?

    2025-3-5 18:46:13

    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索