TypechoJoeTheme

至尊技术网

登录
用户名
密码

Pandas数据重塑:将行级页面数据转换为列级格式,pandas 行列转换

2025-12-05
/
0 评论
/
3 阅读
/
正在检测是否收录...
12/05

假设我们从一批网页中提取了如下结构的数据:

python
import pandas as pd

data = [
{'pageid': 1, 'fieldtype': 'title', 'content': '机器学习入门指南'},
{'pageid': 1, 'fieldtype': 'keywords', 'content': '机器学习, 入门, 算法'},
{'pageid': 1, 'fieldtype': 'description', 'content': '本文介绍机器学习的基本概念与常用算法。'},
{'pageid': 1, 'fieldtype': 'body', 'content': '机器学习是人工智能的重要分支...(此处省略正文)'},

{'page_id': 2, 'field_type': 'title', 'content': '深度学习实战技巧'},
{'page_id': 2, 'field_type': 'keywords', 'content': '深度学习, 实战, 神经网络'},
{'page_id': 2, 'field_type': 'description', 'content': '分享深度学习项目中的实用经验。'},
{'page_id': 2, 'field_type': 'body', 'content': '在实际项目中,模型调优至关重要...'}

]

df = pd.DataFrame(data)

此时,df 是一个典型的长格式(long format)数据表,每条记录代表一个字段的内容。如果我们想按 page_id 将不同字段的内容展开为独立列,就需要进行“重塑”操作。

最直接的方法是使用 pivot 函数。这个函数的核心逻辑是:以某列为索引,某列为列名,某列为值,从而实现行列转换。

python df_pivot = df.pivot(index='page_id', columns='field_type', values='content')

执行后,我们会得到一个以 page_id 为行索引,field_type 为列名的新 DataFrame。原来的四个字段变成了四列:body、description、keywords、title。每一行对应一个完整的页面信息,结构变得规整且易于查阅。

不过,此时的列索引是多级的(虽然这里只有一层),我们可以进一步简化列名,并重置索引以便后续处理:

python df_pivot.columns.name = None df_final = df_pivot.reset_index()

现在,df_final 就是一个标准的宽格式表格,包含 page_idtitlekeywordsdescriptionbody 五列,每一行代表一个完整页面的所有元数据。这样的结构非常适合导出为 Excel、CSV,或用于构建数据库记录、生成报告甚至对接前端展示系统。

当然,现实中的数据往往不会如此理想。有时某些页面可能缺少某个字段,比如某个页面没有填写关键词。在这种情况下,pivot 操作仍能正常运行,但缺失字段的位置会自动填充为 NaN。我们可以在后续根据业务需求决定是否填充默认值,或者直接过滤掉不完整的记录。

此外,如果原始数据中存在重复的 (page_id, field_type) 组合——例如同一页出现了两个标题——pivot 会报错,因为它无法确定该使用哪一条记录。此时可以考虑先用 drop_duplicates 去重,或改用 pivot_table 并指定聚合函数,如取第一条记录:

python df_pivot = df.pivot_table( index='page_id', columns='field_type', values='content', aggfunc='first' # 或 ' '.join 处理多个值 )

这种方法更具容错性,尤其适合处理来源复杂、质量参差的数据源。

除了 pivot,Pandas 还提供了 unstack 方法作为替代方案。其原理是先将目标列设为索引的一部分,再通过层级索引展开。例如:

python df_set = df.set_index(['page_id', 'field_type'])['content'].unstack('field_type')

结果与 pivot 基本一致,适用于更复杂的多级索引场景。

在整个数据重塑的过程中,关键在于理解“什么构成行”、“什么构成列”以及“填充什么值”。只要明确这三点,就能灵活运用 Pandas 提供的各种工具完成转换。

更重要的是,这种从行到列的转变不仅仅是技术操作,更是思维方式的升级。它要求我们跳出原始数据的采集视角,站在分析和应用的角度重新组织信息。当每一个页面都变成一行结构化记录时,我们就具备了批量处理、统计分析、文本挖掘的基础条件。

因此,掌握 Pandas 的数据重塑技巧,不只是学会了一个函数调用,而是获得了一种将杂乱转化为秩序的能力。这正是数据工程师和分析师日常工作的核心价值所在。

朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/40355/(转载时请注明本文出处及文章链接)

评论 (0)