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: 当使用前向或后向填充时,指定索引匹配的最大距离。

 

posted on 2024-05-31 19:17  XiSoil  阅读(3)  评论(0编辑  收藏  举报