2

我目前在数据框中有以下格式的数据:

           metric__name  sample sample_date
0    ga:visitBounceRate     100  2012-11-13
1    ga:uniquePageviews      20  2012-11-13
2          ga:newVisits      19  2012-11-13
3             ga:visits      20  2012-11-13
4   ga:percentNewVisits      95  2012-11-13
5  ga:pageviewsPerVisit       1  2012-11-13
6          ga:pageviews      20  2012-11-13
7    ga:visitBounceRate      72  2012-11-14
8    ga:uniquePageviews      63  2012-11-14
9          ga:newVisits      39  2012-11-14

话虽如此,我正在尝试将 metric__name 列分解为类似的内容。

                ga:visitBounceRate ga:uniquePageviews ga:newVisits     etc...
sample_date
2012-11-13                100                20                 19     etc...

我正在执行以下操作以获得我想要的结果。

df.pivot(index='sample_dates', columns='metric__name', values='samples')

我一直得到的只是 index 包含多个它确实有的值,但为什么它不明白有相似之处并将它们映射到我在所需输出中所做的同一行?

4

1 回答 1

3

使用pivot_table(不会抛出此异常):

In [11]: df.pivot_table('sample', 'sample_date', 'metric__name')
Out[11]:
metric__name  ga:newVisits  ga:pageviews  ga:pageviewsPerVisit  ga:percentNewVisits  ga:uniquePageviews  ga:visitBounceRate  ga:visits
sample_date
2012-11-13              19            20                     1                   95                  20                 100         20
2012-11-14              39           NaN                   NaN                  NaN                  63                  72        NaN

它接受一个聚合函数(默认是平均值):

aggfunc: function, default numpy.mean, or list of functions
     如果传递了函数列表,则生成的数据透视表将具有分层列
     ,其顶层是函数名称(从函数对象本身推断)

关于两者之间的区别,我认为pivot只是进行整形(如果有问题会抛出错误),而pivot_table提供更高级的功能,也就是“电子表格样式的数据透视表”。

于 2013-07-09T20:05:00.513 回答