#该题目来源于力扣:
2889. 数据重塑:透视 - 力扣(LeetCode)
题目要求:
DataFrame weather
+-------------+--------+
| Column Name | Type |
+-------------+--------+
| city | object |
| month | object |
| temperature | int |
+-------------+--------+
编写一个解决方案,以便将数据 旋转,使得每一行代表特定月份的温度,而每个城市都是一个单独的列。输出结果格式如下示例所示。示例 1:
输入:
+--------------+----------+-------------+
| city | month | temperature |
+--------------+----------+-------------+
| Jacksonville | January | 13 |
| Jacksonville | February | 23 |
| Jacksonville | March | 38 |
| Jacksonville | April | 5 |
| Jacksonville | May | 34 |
| ElPaso | January | 20 |
| ElPaso | February | 6 |
| ElPaso | March | 26 |
| ElPaso | April | 2 |
| ElPaso | May | 43 |
+--------------+----------+-------------+
输出:
+----------+--------+--------------+
| month | ElPaso | Jacksonville |
+----------+--------+--------------+
| April | 2 | 5 |
| February | 6 | 23 |
| January | 20 | 13 |
| March | 26 | 38 |
| May | 43 | 34 |
+----------+--------+--------------+
解释:
表格被旋转,每一列代表一个城市,每一行代表特定的月份。
思路流程:
可见,题目的要求是让我们对该数据集进行重塑,即是将mouth列变为索引,name列内的数据变为列名,而最终数据透视表所要显示的内容是temperature列的数据。建立数据透视表就需要用到pivot函数
函数参数介绍:
- index_column:指定用于索引的列名称。
- column_to_pivot:指定用于创建列的列名称。
- value_column:指定要转换为列值的列名称。
代码实现:
import pandas as pddef pivotTable(weather: pd.DataFrame) -> pd.DataFrame:data=weather.pivot(index='month',columns='city',values='temperature')return data
相比excel中复杂的操作流程,使用python重构数据透视表更为简单