展平/删除分层列标题

2024-09-29 01:21:37 发布

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

我有以下数据帧,它是执行groupby+聚合求和的结果:

df.groupby(['id', 'category']).agg([pd.Series.sum])

                   supply           stock            
                      sum             sum
id     category                                                               
4      abc            161          -0.094
6      sde            -76           0.150
23     hgv             64          -0.054
1      wcd            -14           0.073 
76     jhf             -8          -0.057

由于groupby和agg,列标题现在是元组。如何将列标题改回单个值,即:列标题必须是supply和{}。我只需要从标题中去掉sum


Tags: 数据id标题dfstockaggseriespd
2条回答

如果使用sum,“agg function name”将不会作为列的一部分创建(作为多重索引):

^{1}$

要删除它们,可以降低级别:

^{pr2}$

例如:

In [11]: df
Out[11]:
     supply     stock
        sum       sum
0  0.501176  0.482497
1  0.442689  0.008664
2  0.885112  0.512066
3  0.724619  0.418720

In [12]: df.columns.droplevel(1)
Out[12]: Index(['supply', 'stock'], dtype='object')

In [13]: df.columns = df.columns.droplevel(1)

In [14]: df
Out[14]:
     supply     stock
0  0.501176  0.482497
1  0.442689  0.008664
2  0.885112  0.512066
3  0.724619  0.418720

您可以显式地将columns属性设置为您希望的任何值。例如:

^{1}$

相关问题 更多 >