透视Pandas中的系列

问题描述 投票:0回答:1

我有一个看起来像这样的系列:

Area        Classification         Samples
88          500m-1bi               34
94          500m-1bi               112
09          500m-1bi               912
            >1bi                   31
81          <1m                    6574
87          100-500m               12
...

我希望'Classification'标签成为列,'Samples'成为值,所以它看起来像这样:

Area       <1m    100-500m     500-1bi      >1bi  
88                             34
94                             112
09                             912          31
81         6574
87                12
...

我试过了:

df.pivot(columns='Classification', values='Samples')

但是当我这样做时,我得到了AttributeError: 'Series' object has no attribute 'pivot'

所以我试着把它变成一个Dataframe:

df.to_frame().pivot(columns='Classification', values='Samples')

在这种情况下,我得到:

KeyError: 'Classification'

关于如何解决它的任何想法?

**编辑**

这个系列是从groupby函数获得的:

df=df.groupby(['Area','Classification']).agg('count').sort_values('Samples')['Samples']
python pandas pivot series
1个回答
0
投票

这个例子略微修改了df。在Area中添加了10个来填补空白:

Area        Classification         Samples
88          500m-1bi               34
94          500m-1bi               112
09          500m-1bi               912
10          >1bi                   31
81          <1m                    6574
87          100-500m               12

您需要设置索引然后取消堆栈:

df.set_index(['Area', 'Classification']).unstack()

输出:

                Samples                       
Classification 100-500m 500m-1bi     <1m  >1bi
Area                                          
9                   NaN    912.0     NaN   NaN
10                  NaN      NaN     NaN  31.0
81                  NaN      NaN  6574.0   NaN
87                 12.0      NaN     NaN   NaN
88                  NaN     34.0     NaN   NaN
94                  NaN    112.0     NaN   NaN
© www.soinside.com 2019 - 2024. All rights reserved.