首页 文章

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

提问于
浏览
2

我正在处理包含多个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
    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
    

    这最终导致了上述结果

  • 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
    

相关问题