在Pandas中有什么方法可以嵌套合并两个表吗

dgjrabp2  于 2023-03-06  发布在  其他
关注(0)|答案(1)|浏览(105)

table 1

table1 = df.groupby('year').agg(
    Total_Brands=('brand_name', 'nunique'),
    Total_Users=('user_id', 'nunique'),
    Total_Stories=('story_id', 'nunique'),
    Total_Sessions=('video_id', 'nunique'),
    Total_Nodes=('node_key', 'nunique')
)

table 2

table2 = df.groupby(['year','brand_name']).agg(
    Total_Users=('user_id', 'nunique'),
    Total_Stories=('story_id', 'nunique'),
    Total_Sessions=('video_id', 'nunique'),
    Total_Nodes=('node_key', 'nunique')
)

table 1

Total_Brands    Total_Users Total_Stories   Total_Sessions  Total_Nodes
year                    
2018        12              324              101          1431       0
2019        19              859              576          17453      0
2020        22              5062         890          98101      0
2021        29              9818         2584         208461       2784
2022        31              2148         1548         39241    1959

table 2

Total_Users  Total_Stories   Total_Sessions  Total_Nodes
year    brand_name              
2018    ABC         2         4              9               0
        CDE         4         12         24              0
        FGH         6         19         172         0
        JKL         2          1         5               0
        MNO         34        32         376         0

通过使用这两个表,我想以嵌套形式连接这两个表,并将值的计数显示为嵌套表的列名。例如:

2018    12 Brands   324 Users   101 Stories 1431 Sessions   0 Nodes                                 
    ABC             2                4               9               0
        CDE             4               12              24               0
        FGH             6               19             172               0
        JKL             2                1               5               0
        MNO            34               32             376               0
2019    19 Brands       859 Users   576 Stories 17453 Sessions  0 Nodes
        ...             ...             ...             ...             ...

我需要这种类型的输出使用pythonPandas。

z0qdvdin

z0qdvdin1#

您可以用途:

(pd.concat([df1.astype(str).add(' '+df1.columns.str[6:])
               .rename(columns={'Total_Brands': 'brand_name'})
               .set_index('brand_name', append=True),
            df2])
   .sort_index(kind='stable')
)

输出:

Total_Users Total_Stories   Total_Sessions Total_Nodes
year brand_name                                                       
2018 12 Brands    324 Users   101 Stories    1431 Sessions     0 Nodes
     ABC                  2             4                9           0
     CDE                  4            12               24           0
     FGH                  6            19              172           0
     JKL                  2             1                5           0
     MNO                 34            32              376           0
2019 19 Brands    859 Users   576 Stories   17453 Sessions     0 Nodes
2020 22 Brands   5062 Users   890 Stories   98101 Sessions     0 Nodes
2021 29 Brands   9818 Users  2584 Stories  208461 Sessions  2784 Nodes
2022 31 Brands   2148 Users  1548 Stories   39241 Sessions  1959 Nodes

相关问题