2017-02-11 69 views
0

我試圖樞轉下表在[pd.concat的結果(X)],與這行代碼:Python的熊貓 - 混合值類型錯誤樞轉表

df = pd.concat(x).pivot_table(index=["SECURITY", "DATE"], columns="variable", values="value") 

      DATE  SECURITY  value   variable 
0 2017-02-01 EDH8 COMDTY  98.365   PX_LAST 
1 2017-02-02 EDH8 COMDTY  98.37   PX_LAST 
2 2017-02-03 EDH8 COMDTY  98.36   PX_LAST 
3 2017-02-06 EDH8 COMDTY  98.405   PX_LAST 
4 2017-02-07 EDH8 COMDTY  98.41   PX_LAST 
5 2017-02-08 EDH8 COMDTY  98.435   PX_LAST 
6 2017-02-09 EDH8 COMDTY  98.395   PX_LAST 
0 2017-02-01 EDH8 COMDTY 1.00804e+06   OPEN_INT 
1 2017-02-02 EDH8 COMDTY 1.00999e+06   OPEN_INT 
2 2017-02-03 EDH8 COMDTY 1.01918e+06   OPEN_INT 
3 2017-02-06 EDH8 COMDTY 1.02386e+06   OPEN_INT 
4 2017-02-07 EDH8 COMDTY 1.02461e+06   OPEN_INT 
5 2017-02-08 EDH8 COMDTY 1.04626e+06   OPEN_INT 
6 2017-02-09 EDH8 COMDTY 1.05029e+06   OPEN_INT 
0 2017-02-01 EDH8 COMDTY 2018-03-19 LAST_TRADEABLE_DT 
1 2017-02-02 EDH8 COMDTY 2018-03-19 LAST_TRADEABLE_DT 
2 2017-02-03 EDH8 COMDTY 2018-03-19 LAST_TRADEABLE_DT 
3 2017-02-06 EDH8 COMDTY 2018-03-19 LAST_TRADEABLE_DT 
4 2017-02-07 EDH8 COMDTY 2018-03-19 LAST_TRADEABLE_DT 
5 2017-02-08 EDH8 COMDTY 2018-03-19 LAST_TRADEABLE_DT 
6 2017-02-09 EDH8 COMDTY 2018-03-19 LAST_TRADEABLE_DT 

這導致儘管如下錯誤:DataError:沒有數字類型進行聚合。有任何想法嗎?謝謝!

回答

1

你可以選擇一個不同的,幾乎任意的aggfunc;你只會有一個元素來操作。例如,sum

In [37]: df.pivot_table(index=["SECURITY", "DATE"], 
         columns="variable", values="value", 
         aggfunc=sum) 
Out[37]: 
variable    LAST_TRADEABLE_DT  OPEN_INT PX_LAST 
SECURITY DATE            
EDH8 COMDTY 2017-02-01  2018-03-19 1.00804e+06 98.365 
      2017-02-02  2018-03-19 1.00999e+06 98.37 
      2017-02-03  2018-03-19 1.01918e+06 98.36 
      2017-02-06  2018-03-19 1.02386e+06 98.405 
      2017-02-07  2018-03-19 1.02461e+06 98.41 
      2017-02-08  2018-03-19 1.04626e+06 98.435 
      2017-02-09  2018-03-19 1.05029e+06 98.395 

或者min,或max等需要注意的是,如果你混合非數值和數值列,你value列將會是dtype=object,所以你要想要重新計算(?)結果列以確保它們適當地被分類。

1

您可能想要檢查value列的數據類型是否爲數值類型,否則(例如字符串/日期)它可能會導致默認聚合函數的問題。在這種情況下,您可能需要明確使用另一個aggfunc,例如將它們存儲到數組中。

根據official documentvalues : column to aggregate, optional,aggfunc : function or list of functions, default numpy.mean