Pandas DataFrame行转列:pivot与unstack实战

3 下载量 144 浏览量 更新于2024-08-29 收藏 81KB PDF 举报
"pandas.DataFrame的pivot()和unstack()实现行转列" 在数据分析和处理过程中,有时我们需要将数据从行格式转换为列格式,或者相反。`pandas`库中的`pivot()`和`unstack()`函数就是为了解决这类问题而设计的。这两个函数可以帮助我们将数据重塑,以更好地展示或分析数据结构。 `pivot()`函数是`pandas`中的一种重塑数据的方法,它允许我们将特定的列值转化为行索引,从而实现数据的行转列。在给定的代码示例中,我们看到一个名为`result_df`的数据帧,它包含`UserName`(用户名)、`Subject`(科目)和`Score`(分数)三列。`pivot()`函数被用来将`UserName`设为行索引,`Subject`设为列索引,`Score`则作为新的列值。这样,原始数据中每个用户的不同科目分数就被整理到一个二维表格中,每个用户的每一科目对应一行。 `pivot()`的语法是`pivot(index, columns, values)`, 其中: - `index`:指定要提升为行索引的列名。 - `columns`:指定要提升为列索引的列名。 - `values`:指定要展平到新索引结构的列名,如果未指定,会默认选择数据帧中的所有剩余列。 `reset_index()`方法随后被调用,这会将原数据帧的索引恢复为普通的列,使得结果更便于存储到数据库。 另一个相关但不完全相同的操作是`unstack()`. `unstack()`通常用于将层次化索引的列转换为行,与`pivot()`相反。在示例中,`pivot()`得到的以`UserName`为索引的数据帧`df_pivoted_init`可以进一步使用`unstack()`,以便将索引转换回列,形成一个新的数据帧`df_pivoted`。 `pivot()`和`unstack()`都是`pandas`中强大的数据重塑工具,它们帮助我们有效地组织和展示数据,适应不同的分析需求。通过熟练掌握这两个函数,我们可以更好地理解和操作复杂的数据集,特别是在需要进行聚合、透视和统计分析时。