2

それぞれ価格が異なる複数の UNSPSC コードを含むデータを扱っています。UNSPSC コードごとのすべての価格を組み合わせたピボット テーブルを取得したいと考えています。

最終的に、UNSPSC の上位 5 銘柄を最高価格で抽出したいと考えています。

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

これは絶対にうまくいきません。それが提供するすべての列は必要ありません。2つだけ欲しい。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: Index contains duplicate entries, cannot reshape でした

groupby と aggfun=np.sum を利用しようとしましたが、探しているものが得られないようです。一意の UNSPSC ごとの価格の合計を示すピボット テーブルを取得するにはどうすればよいですか?

ありがとう!

4

2 に答える 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

これは、上記の結果で私のために働いた

于 2013-10-17T21:44:33.317 に答える
0

それがあなたが望むものかどうかはわかりませんが、 groupby と 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
于 2013-10-17T19:02:18.857 に答える