Ich habe ein Datenframe, dass ich die Datentypen für jede Spalte betrachten.Numpy dtype - Datentyp nicht verstanden
Wenn ich laufen:
In [23]: df.dtype.descr
Out [24]: [(u'date', '<i8'), (u'open', '<f8'), (u'high', '<f8'), (u'low', '<f8'), (u'close', '<f8'), (u'volume', '<f8'), (u'dividend', '<f8'), (u'adj_factor', '<f8'), (u'split_factor', '<f8'), (u'liq', '<f8'), (u'currency', '|O')]
ich die Währung dtype auf S7 einstellen möchten. Ich mache:
In [25]: dtype_new[-1] = (u'currency', "|S7")
In [26]: print dtype_new
Out [27]: [(u'date', '<i8'), (u'open', '<f8'), (u'high', '<f8'), (u'low', '<f8'), (u'close', '<f8'), (u'volume', '<f8'), (u'dividend', '<f8'), (u'adj_factor', '<f8'), (u'split_factor', '<f8'), (u'liq', '<f8'), (u'currency', '|S7')]
Es scheint das richtige Format zu sein. Also versuche ich es zu meiner df zu setzen:
In [28]: df = df.astype(np.dtype(dtype_new))
Und ich bekomme die Fehlermeldung:
TypeError('data type not understood',)
Was soll ich zu ändern werden? Vielen Dank. Dies hat funktioniert, bevor ich kürzlich Anaconda aktualisiert habe und mir das Problem nicht bekannt ist. Vielen Dank.
EINSTELLUNG:
df.dtype ist
In [23]: records.dtype
Out[23]: dtype((numpy.record, [(u'date', '<i8'), (u'open', '<f8'), (u'high', '<f8'), (u'low', '<f8'), (u'close', '<f8'), (u'volume', '<f8'), (u'dividend', '<f8'), (u'adj_factor', '<f8'), (u'split_factor', '<f8'), (u'liq', '<f8'), (u'currency', 'O')]))
Wie kann ich die '0' in eine Zeichenfolge weniger als 7 Zeichen ändern?
Wie kann ich den letzten dtype von 'O' auf etwas anderes ändern? Insbesondere eine Zeichenfolge mit weniger als 7 Zeichen.
LASTLY - ist das ein Unicode-Problem? Mit Unicode:
In [38]: np.dtype([(u'date', '<i8')])
...:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-38-8702f0c7681f> in <module>()
----> 1 np.dtype([(u'date', '<i8')])
TypeError: data type not understood
Keine Unicode:
In [39]: np.dtype([('date', '<i8')])
Out[39]: dtype([('date', '<i8')])
Es funktioniert für mich mit 'np.ones (1, dtype = df.dtype)'. Ich frage mich, ob das Problem mit dem Wert in diesem Feld ist. Auch ich benutze Py3. – hpaulj
Ich bin auf Py2 - es funktionierte vor dem numpy Upgrade ich lief. – user1911092
Haben Sie überlegt, ein minimales Arbeitsbeispiel zu erstellen? Welche genauen Versionen laufen auch? – norok2