2889. 数据重塑:透视
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 |
+----------+--------+--------------+
解释:
表格被旋转,每一列代表一个城市,每一行代表特定的月份。
import pandas as pd def pivotTable(weather: pd.DataFrame) -> pd.DataFrame: weather=weather.pivot(index='month', columns='city', values='temperature') month_order = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] weather = weather.reindex(month_order) # 按月份重新排序,会添加没有的索引 return weather # pivot 是 Pandas 中用于数据重塑的方法之一,它允许您将 DataFrame 重新排列为新的形式。 # DataFrame.pivot(index=None, columns=None, values=None) # index: 新 DataFrame 的行索引(也称为行标签)。 # columns: 新 DataFrame 的列索引(也称为列标签)。 # values: 用于填充新 DataFrame 的值的列名。 # reindex 是 Pandas 中用于重新索引(reindex)数据的方法。它允许您按照指定的新索引对现有的 Series 或 DataFrame 进行重新排序和重新标记索引,同时可以处理缺失的索引值。 # DataFrame.reindex(labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, # fill_value=nan, limit=None, tolerance=None) # labels 或 index: 用于指定新的行索引。 # columns: 用于指定新的列索引。 # axis: 用于指定沿着哪个轴进行重新索引,0 表示按行索引重新索引,1 表示按列索引重新索引。 # method: 用于指定填充缺失值的方法,可选值包括 'pad'、'ffill'、'bfill' 等。 # copy: 如果为 True,则复制数据;如果为 False,则在可能的情况下尽量不复制数据。 # fill_value: 用于填充缺失值的特定值。 limit: 当使用前向或后向填充时,限制连续填充的最大数量。 # tolerance: 当使用前向或后向填充时,指定索引匹配的最大距离。