【发布时间】:2018-02-21 19:19:08
【问题描述】:
我有一个看起来像这样的系列:
Area Classification Samples
88 500m-1bi 34
94 500m-1bi 112
09 500m-1bi 912
>1bi 31
81 <1m 6574
87 100-500m 12
...
我希望“分类”标签成为列,而“样本”成为值,所以它看起来像这样:
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.values -
我从 groupby 函数中得到它: df=df.groupby(['Area','Classification']).agg('count').sort_values('code')[ '代码']。 “示例”实际上是“代码”,我使用示例是因为它似乎更易于理解
-
如果你只做
df.unstack()会发生什么(其中 df 是系列 post-agg) -
当我做 df.values 我得到 [ 34 112 912 ...]
-
噢,我需要做的就是 df.unstack()。工作完美。问题解决了。
标签: python pandas pivot series