LeeetCode-2889. 資料重塑:透視

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

相關文章