透视Pandas中的系列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了透视Pandas中的系列相关的知识,希望对你有一定的参考价值。

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

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']
答案

这个例子略微修改了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

以上是关于透视Pandas中的系列的主要内容,如果未能解决你的问题,请参考以下文章

Pandas分组统计与时间序列

如何使用 Pandas 中的数据透视表计算标准差?

在 Pandas 数据透视表中显示映射标签而不是代码

如何在 Pandas 中的超大数据框上创建数据透视表

一文搞定Pandas的透视表

在 Pandas 中处理大型数据透视表