在透视表中,如何在列中添加维度(除了维度行之外)?

2024-04-25 11:52:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的数据集,我想有两个维度的行。 以及列中的一个维度

我有一个常规的透视表,我希望将其中一个维度(周)作为列端的维度(首先是所有指标),因此我每周有2个指标(成本、安装)

/*agg表格*/

df2Group = df2.groupby(['os','Campaign ID','week']).agg({'cost_plus_fee':'sum', 'installs':'sum'})


Tags: 数据idos指标常规agg表格成本
1条回答
网友
1楼 · 发布于 2024-04-25 11:52:20

^{}^{}^{}rename第一级MultiIndex一起使用:

df2 = pd.DataFrame({
        'os':['andriod'] * 10,
         'Campaign ID':[103292] * 5 +[103293] * 5,
         'week':[22,23,24] * 3 + [22],
         'cost_plus_fee':[1,3,5,7,1,0,4,5,6,3],
         'installs':[5,3,6,9,2,4,2,5,8,4]
})
print (df2)
        os  Campaign ID  week  cost_plus_fee  installs
0  andriod       103292    22              1         5
1  andriod       103292    23              3         3
2  andriod       103292    24              5         6
3  andriod       103292    22              7         9
4  andriod       103292    23              1         2
5  andriod       103293    24              0         4
6  andriod       103293    22              4         2
7  andriod       103293    23              5         5
8  andriod       103293    24              6         8
9  andriod       103293    22              3         4

df2Group = (df2.groupby(['os','Campaign ID','week'])
               .agg({'cost_plus_fee':'sum', 'installs':'sum'})
               .unstack()
               .swaplevel(1,0, axis=1)  
               .sort_index(axis=1, level=0)
               .rename(columns = lambda x: f'week {x}', level=0))
print (df2Group)
  week                      week 22                week 23           \
                    cost_plus_fee installs cost_plus_fee installs   
os      Campaign ID                                                 
andriod 103292                  8       14             4        5   
        103293                  7        6             5        5   

week                      week 24           
                    cost_plus_fee installs  
os      Campaign ID                         
andriod 103292                  5        6  
        103293                  6       12    

相关问题 更多 >