Pandas Pivot表,在列中处理多个值

时间:2013-10-17 17:56:42

标签: python group-by pandas pivot pivot-table

我正在使用包含多个UNSPSC代码的数据,每个代码具有不同的价格。 我想得到一个数据透视表,它结合了每个UNSPSC代码的所有价格。

最终,我想以最高价格提取前5个UNSPSC。

UNSPSC= pivot_table(analysis, rows=['UNSPSC'], cols =['Extended Price']) 

这绝对不起作用。我不想要它提供的所有列。我只想要两个。 UNSPSC,然后总价与唯一代码相关联。

<class 'pandas.core.frame.DataFrame'>
Index: 78 entries, 12142100.0 to 55121611.0
Columns: 21924 entries, ($ Difference, 2.70000004768) to (Quantity, 3255.19995117)
dtypes: float64(21924)

我也尝试过

UNSPSC =analysis.pivot(index = 'UNSPSC', columns ='Extended Price')

我的错误是     ReshapeError:索引包含重复的条目,无法重新形成

我试图利用groupby和aggfun = np.sum,但我似乎无法得到我想要的东西。 如何获得一个数据透视表,显示每个独特的UNSPSC的价格总和?

谢谢!

2 个答案:

答案 0 :(得分:0)

不确定这是你想要的,但尝试合并groupby and aggregate

>>> analysis = pd.DataFrame({"UNSPSC":["aa", "aa", "bb", "bb", "bb"], "ExtendedPrice": [1.1, 5.1, 3.5, 4.3, 3.0]})
>>> analysis.groupby('UNSPSC').aggregate(np.sum)
        ExtendedPrice
UNSPSC               
aa                6.2
bb               10.8

答案 1 :(得分:0)

from pandas import pivot_table
import numpy as np


UNSPSC = pivot_table( analysis, values = 'Extended Price', rows = 'UNSPSC', aggfunc = np.sum)


Pivot = UNSPSC.order(ascending = False)
 UNSPSC
12352200    350045.593750
12352100    165760.484375
12352300     96212.031250
12190000     68791.710938
12352000     62938.332031

这最终为我提供了上述结果

相关问题