2016-04-18 16 views
0

100,000行と3列のデータセットをpivotに変換しようとしています。次のコードはエラーなしで実行されますが、値はNaNと表示されます。Pythonデータをピボットに変換する

df1 = pd.pivot_table(df_TEST, values='actions', index=['sku'], columns=['user']) 

DataFrameから(1から36までの範囲)の値を取るされていません。誰かがこのような状況に遭遇しましたか?

+1

再現可能な例はありますか? – joris

+1

[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を追加できますか?私はそれをテストし、私のサンプル 'df_TEST = pd.DataFrame({'sku':{0:1,1,2,2:2}、 'user':{0: 'a'、1: 'a'、2: 'b'}、 'actions':{0:12,1:44,2:21}}) 'となります。 – jezrael

答えて

0

これは、すべての値が存在しない可能性があるため、ピボットを実行しているときに発生します。例えば

In [10]: df_TEST 
Out[10]: 
    a b c 
0 0 0 0 
1 0 1 0 
2 0 2 0 
3 1 1 1 
4 1 2 3 
5 1 4 5 

、あなたはこれにピボットを行い、

In [9]: df_TEST.pivot_table(index='a', values='c', columns='b') 
Out[9]: 
b 0 1 2 4 
a    
0 0 0 0 NaN 
1 NaN 1 3 5 

列A = 0、列とdf_TESTにエントリがないので、あなたは、インデックス0、列4でのNaNを得た、という注意b = 4.

通常、このような値はゼロで埋められます。

In [11]: df_TEST.pivot_table(index='a', values='c', columns='b').fillna(0) 
Out[11]: 
b 0 1 2 4 
a    
0 0 0 0 0 
1 0 1 3 5 
関連する問題