2017-02-11 2 views
0

Ich versuche, auf der folgende Tabelle [das Ergebnis pd.concat (x)] zu schwenken, mit dieser Codezeile:Python Pandas - Fehler Schwenktisch mit gemischten Werttypen

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 

Dies führt zu Der folgende Fehler jedoch: DataError: Keine numerischen Typen zu aggregieren. Irgendwelche Ideen? Vielen Dank!

Antwort

1

Sie können einfach eine andere, fast beliebige, agfunc auswählen; Sie werden immer nur ein Element zum Arbeiten haben. Zum Beispiel 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 

Oder min oder max usw. Beachten Sie, wenn Sie nicht-numerische und numerische Spalten abmischen, Ihre value Spalte von dtype=object sein wird, und so sind Sie gehen die resultierenden Spalten neu numerieren (?), um sicherzustellen, dass sie entsprechend typisiert sind.

1

Sie können überprüfen, ob der Datentyp für value Spalte numerische Typen ist, andernfalls (z. B. Zeichenfolge/Datum) kann es Problem für die Standard-Aggregatfunktion verursachen. In diesem Fall möchten Sie möglicherweise explizit einen anderen aggfunc verwenden, z. B. um sie in einem Array zu speichern.

Gemäß der official document, , aggfunc : function or list of functions, default numpy.mean.

Verwandte Themen