我目前在数据框中有以下格式的数据:
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')
所有我一直得到的是索引包含多个确实存在的值,但是为什么它不会理解有相似之处并将它们映射到我想要的输出中的同一行?
答案 0 :(得分: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
:函数,默认numpy.mean
或函数列表
如果传递的函数列表,则生成的数据透视表将具有分层列 其顶级是函数名称(从函数对象本身推断)
关于两者之间的区别,我认为pivot
只是重塑(如果出现问题则会抛出错误),而pivot_table
会提供更多信息高级功能,又名“电子表格式数据透视表”。