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: 當使用前向或後向填充時,指定索引匹配的最大距離。