首页 > 解决方案 > ID 和月份上的 Groupby 列,并为每个月分配值作为新的 colmuns

问题描述

我有一个数据集,其中我按具有相同 ID 的每月数据进行分组:

temp1 = listvar[2].groupby(["id", "month"])["value"].mean()

这导致:

id       month

SN10380  1       -9.670370
         2       -8.303571
         3       -4.932143
         4        0.475862
         5        5.732000
                    ...   
SN99950  8        6.326786
         9        4.623529
         10       1.290566
         11      -0.867273
         12      -2.485455

然后,我希望将每个月和相应的值作为同一 ID 上的自己的列,如下所示:

  id         month_1     month_2  month_3   month_4 .... month_12

  SN10380   -9.670370   -8.303571 .....

  SN99950

我使用 apply()、transform() 和 agg() 尝试了不同的解决方案,但无法产生所需的输出。

标签: pythonpandasdataframe

解决方案


你可以使用unstack. 这是示例代码:

import pandas as pd

df = pd.DataFrame({
    "id": [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],
    "month": [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
    "value": [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
})

temp1 = df.groupby(["id", "month"])["value"].mean()

temp1.unstack()

我希望它有帮助!


推荐阅读