Warum Pandas meine numpy float32 coerce in diesem Stück Code FLOAT64:Warum zwingt Pandas meine numpy float32 zu float64?
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame([[1, 2, 'a'], [3, 4, 'b']], dtype=np.float32)
>>> A = df.ix[:, 0:1].values
>>> df.ix[:, 0:1] = A
>>> df[0].dtype
dtype('float64')
Das Verhalten scheint so seltsam für mich, dass Wunder, wenn es ein Fehler ist. Ich bin auf Pandas Version 0.17.1 (aktualisierte PyPI-Version) und ich stelle fest, dass es kürzlich erzwungene Fehler gab, siehe https://github.com/pydata/pandas/issues/11847. Ich habe den Code mit einem aktualisierten GitHub-Master nicht ausprobiert.
Ist es ein Fehler oder missverstand ich ein "Feature" in Pandas? Wenn es ein Feature ist, wie komme ich dann dazu?
(Die Nötigung Problem bezieht sich auf eine Frage, die ich vor kurzem über die Leistung von Pandas Zuweisungen gestellt: Assignment of Pandas DataFrame with float32 and float64 slow)
Es mag seltsam sein, aber es ist konsistent mit numpy. Numpy wandelt gerade ganze Zahlen automatisch in numpy.float64-Typen um. Da Pandas im Kern über keine Funktionen verfügt, wird diese Funktionalität IMO erwartet (obwohl in Ihrem Fall sicherlich nicht ideal). – Benji
Aber "Pandas" hat eine größere Neigung, "dtype = Objekt" als "numpy" zu verwenden. Es gibt ihm eine größere Flexibilität bei der Handhabung gemischter Typen - Zeichenfolgen können beliebig lang sein, Spalten können Typen mixen usw. Aber die Flexibilität kommt mit Rechen- und Speicherkosten. – hpaulj