3

フラットテーブルデータを3D配列にピボットする可能性はたくさんあるようですが、うまくいくものが見つかりません。columns= ['name'、'type'、'date'、'のデータがあるとします。価値']。経由してピボットしようとすると

pivot(index='name', columns=['type', 'date'], values='value')

私は得る

ValueError: Buffer has wrong number of dimensions (expected 1, got 2)

私は多分開発パンダからのドキュメントを読んでいますか?これがそこに記述されている使用法のようです。私は0.8パンダを実行しています。

MultiIndex ['x'、'y'、'z']シリーズがあるかどうか疑問に思っていますが、それをパネルに配置するパンダの方法はありますか?groupbyを使用して作業を完了することはできますが、これは、nd配列をアセンブルするためにnumpyで行うこととほぼ同じです。かなり一般的な操作のように見えるので、すでに実装されているのではないかと思います。

4

2 に答える 2

8

pivot単一の列を使用して列を生成することのみをサポートします。おそらくpivot_table、複数の列を使用してピボットテーブルを生成するために使用する必要があります。

pandas.tools.pivot.pivot_table(your_dataframe, values='value', index='name', columns=['type', 'date'], aggfunc='sum')

のAPIリファレンスドキュメントに記載されている階層列は、複数のカテゴリではなく複数のpivotフィールドがある場合に関連しています。

'type'と'date'がカテゴリであり、その値を列名として使用する必要があるとすると、を使用する必要がありますpivot_table

ただし、同じカテゴリ(たとえば、「タイプ」)の異なる値フィールドに別々の列が必要な場合はpivot、値の列とカテゴリを列パラメータとして指定せずに使用する必要があります。

たとえば、次のDataFrameがあるとします。

df = DataFrame({'name': ['A', 'B', 'A', 'B'], 'type': [1, 1, 2, 2], 'date': ['2012-01-01', '2012-01-01', '2012-02-01', '2012-02-01'],  'value': [1, 2, 3, 4]})

pt = df.pivot_table(values='value', index='name', columns=['type', 'date'])
p = df.pivot('name', 'type')

ptは次のようになります:

type           1           2
date  2012-01-01  2012-02-01
name                        
A              1           3
B              2           4

およびpは次のようになります。

          date              value   
type           1           2      1  2
name                                  
A     2012-01-01  2012-02-01      1  3
B     2012-01-01  2012-02-01      2  4

:パンダバージョン<0.14.0の場合、indexおよびキーワード引数はそれぞれおよびcolumnsに置き換える必要があります。rowscols

于 2012-11-07T13:16:49.540 に答える