繁体   English   中英

Pandas Dataframe 数据透视表:如何按列值分组?

[英]Pandas Dataframe Pivot-table: How to group by column values?

我有以下数据帧结构:

   dimension  month of year    metric1      metric2
0     A          201809          xxxx         xxxx
1     B          201809          xxx          xxx
2     C          201808          xxx          xxx
...

接下来我创建了一个数据透视表:

table = pd.pivot_table(df, values=['metric1', 'metric2'], index=['dimension'], columns=['ga:yearMonth'], aggfunc=np.sum)

这导致:

                       metric1                    metric2
month of year    201807 201808 201809      201807 201808 201809 
dimension
A                   x      x      x          x      x      x
B                   x      x      x          x      x      x
C                   x      x      x          x      x      x 

这非常接近我想要的,除了我想要按月份而不是指标对数字进行分组。 像这样的东西:

month of year     201807    201808     201809 
metric            1   2     1   2      1   2
dimension
A                 x   x     x   x      x   x
B                 x   x     x   x      x   x
C                 x   x     x   x      x   x

环顾四周,我的理解是这将需要使用 MultiIndexing,尽管我一直无法找到可行的解决方案。

我只是为 metric1 和 metric2 设置了一些值。 但请参阅下面的代码。

import pandas as pd
import numpy as np

df = pd.DataFrame([['A', '201809' ,234, 567],
                  ['B', '201809' ,105, 640],
                  ['C', '201808' ,250, 700],
                  ['A', '201808' ,200, 267],
                  ['B', '201809' ,57, 654],
                  ['C', '201807' ,205, 620],
                  ['A', '201807' ,234, 567],
                  ['B', '201808' ,110, 640],
                  ['C', '201808' ,275, 700],
                  ['A', '201807' ,150, 267],
                  ['B', '201807' ,57, 654],
                  ['C', '201809' ,205, 620]
                 ], columns=['dimension','month','metric1','metric2'])

df2 = pd.melt(df, id_vars=['dimension', 'month'], value_vars=['metric1', 'metric2'])

pd.pivot_table(df2, values=['value'], index=['dimension'], columns=['variable' , 'month'], aggfunc=np.sum)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM