2013-09-23 32 views
2

我正在使用熊貓庫在csv文件中創建數據透視表。我們可以在透視表熊貓中擁有多維值嗎?

pivot_table代碼的通常格式與底部代碼類似。

tips=read_csv('tips.csv') 
`table=pd.pivot_table(tips, values='tip_pct', rows=['time', 'sex'], cols='smoker')` 

我想知道是否可以向值字段添加多個維度,如下所示?

List=read_csv('list.csv') 
table=pd.pivot_table(List, values=['Applications','Acquisitions'], rows='Sub-Product',cols='Application Date', aggfunc='sum') 

我試過上面的代碼,但格式是錯誤的,所以我希望有另一種方式來得到它?

最終我想這

http://i.stack.imgur.com/cifML.png

所有我現在可以得到的是

http://i.stack.imgur.com/4mbzK.png

這是我想要一個我原來list.csv文件的一部分轉換爲數據透視表。

Application Date Sub-Product Applications Acquisitions 
11/1/12     GP    1 1 
11/1/12     GP    1 1 
11/2/12     GP    1 1 
11/2/12     GP    1 1 
11/3/12     GP    1 1 
11/3/12     GPF    1 1 
11/4/12     GPF    1 1 
11/4/12     GPF    2 2 
11/5/12     GPF    1 1 
11/5/12     GPF    1 1 
11/6/12     GPF    1 1 





    This is what im trying to achieve for my pivot table. 

    1. Cols : Application Date 
    2. Row labels: Sub-Product 
    3. Values: Application, Acquisitions 

      Row Labels  11/1/2012 11/2/2012 11/3/2012 
      **GP**   
      Applications 190  207   65 
      Acquisitions 164  168   54 
      **GPF**   
      Applications 1391  1430   1269 
      Acquisitions 1124  1142   992 
      **Innovative Gateway**   
      Applications 2  1  
      Acquisitions 2  1 

但是我所得到的是

Sub-Product ('Applications', '1/1/13')('Applications', '1/10/13') 
    GP        48 134 
    GPF        600 1099  
    Innovative Gateway    1 2 

這是我的代碼:

> list=pd.read_csv("List.csv") 
> df=DataFrame(list) 
> table=pd.pivot_table(df,values=['Applications','Acquisitions'], rows='Sub-Product',cols='Application Date',aggfunc=np.sum) 
>table.to_csv('file.csv') 

所以,現在的問題是,我無法擁有的價值觀多個值領域和日期似乎混亂起來。請幫忙!

感謝


日期問題可以得到解決

xl2["Application Date"] = pd.to_datetime(xl2["Application Date"], format="%m/%d/%y") 

現在我唯一的問題是,值域着需要超過一個值,並且想知道如果任何人有任何關於如何使用堆棧或重塑函數的想法。

+0

你是什麼意思的格式是錯誤的? –

+0

嗨安迪,你能看看我分享的鏈接嗎? – jxn

+0

它看起來像你可以堆疊/重塑成正確的形式。請複製並粘貼實際文字而不是圖片......這似乎與原始參數不匹配:S –

回答

2

是的,他們添加爲頂柱級別:

In [1]: df = pd.DataFrame(np.random.randint(0, 3, (5, 5)), columns=list('abcde')) 

In [2]: df 
Out[2]: 
    a b c d e 
0 2 1 1 2 0 
1 0 1 2 0 2 
2 1 1 1 0 2 
3 0 0 1 1 0 
4 2 0 2 0 1 

In [3]: df.pivot_table(values=['a', 'b'], rows='c', cols='d') 
Out[3]: 
    a   b 
d 0 1 2 0 1 2 
c 
1 1 0 2 1.0 0 1 
2 1 NaN NaN 0.5 NaN NaN