2016-04-18 77 views
0

我想將具有100,000行和3列的數據集轉換爲pivot。下列代碼運行時沒有錯誤,但值顯示爲NaNPython將數據轉換爲數據透視

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 

需要注意的是,你在索引0和4列了NaN的,因爲在df_TEST沒有條目列A = 0和列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