Pandas DataFrame行转列:pivot()与unstack()用法解析

版权申诉
21 下载量 191 浏览量 更新于2024-09-11 收藏 81KB PDF 举报
"pandas.DataFrame的pivot()和unstack()函数是数据操作中常见的转换方法,它们可以帮助我们将数据从行格式转换为列格式,或者反之。这两个函数在数据分析中有着广泛的应用,尤其在处理多维数据时,能有效地整理数据结构,使其更便于分析和展示。以下是对这两个函数的详细讲解。 `pivot()`函数: `pivot()`函数允许我们通过指定索引、列和值这三个参数来重新组织DataFrame。它的基本语法是: ```python pivot(index, columns, values) ``` - `index`: 这是你想要作为新DataFrame行索引的列名。 - `columns`: 这是你想要作为新DataFrame列索引的列名。 - `values`: 这是你希望被展平到新DataFrame中的列名。 在提供的示例中,`pivot()`函数用于将`UserName`作为行索引,`Subject`作为列索引,`Score`作为值,从而将原始数据从三列(UserName, Subject, Score)转换成多列,每列代表一个UserName在不同Subject上的得分。 ```python df_pivoted_init = result_df.pivot('UserName', 'Subject', 'Score') ``` `reset_index()`函数: `reset_index()`函数通常与`pivot()`结合使用,它将行索引变为普通的列,这在处理数据库存储或数据交换时非常有用。在示例中,`reset_index()`将`pivot()`生成的新行索引(原`UserName`列)再次作为普通列添加到DataFrame中: ```python df_pivoted = df_pivoted_init.reset_index() ``` `unstack()`函数: `unstack()`函数与`pivot()`类似,但它的操作更加灵活。它是`pivot()`的一种变体,可以将层次化的列索引转换为行索引。如果一个DataFrame具有多级列索引,`unstack()`会把最外层的列索引转换为行索引。 例如,如果我们有一个DataFrame,其中一列是多级索引,我们可以用`unstack()`将其转换为行: ```python df_unstacked = df.set_index(['Level1', 'Level2']).unstack() ``` 在这个例子中,`Level2`会变成新的行索引,而`Level1`会成为列索引。 总结: 在数据分析中,`pivot()`和`unstack()`是强大的工具,用于重塑DataFrame以适应特定的分析需求。`pivot()`适合于固定行和列索引的转换,而`unstack()`则更适合处理具有多级索引的情况。理解并熟练运用这两个函数,能够帮助我们更好地理解和操作复杂的数据结构,从而进行更有效的数据探索和建模。"