Der Konstruktor der Pandas-Serie erzeugt NaN-Werte, wenn ein Wörterbuch übergeben wird, in dem der Schlüssel ein Tupel mit einem der Elemente als Datetime ist. Der Code ist unten.Konstruktor der Pandas-Serie erzeugt NaN-Werte
Seltsamerweise passiert es nicht, wenn der Schlüssel ein einzelnes Datetime oder ein Tupel ohne Datetimes ist.
Es scheint, dieses Verhalten wurde in Pandas 0.15.0 eingeführt, da es in 0.14.1 funktioniert, aber ich kann nichts in den Versionshinweisen finden.
Ich verwende 64-Bit Python 2.7 unter Windows.
Jede Hilfe wird geschätzt.
import datetime
import pandas as pd
d = {
(datetime.date(2016, 5, 1), 'k1'): 1,
(datetime.date(2016, 5, 2), 'k2'): 2
}
print 'Dictionary:'
print d
print
s = pd.Series(d)
print 'Series:'
print s
print
df = pd.DataFrame(d.values(), index=pd.MultiIndex.from_tuples(d.keys()))
print 'DataFrame:'
print df
print
Ausgang:
Dictionary:
{(datetime.date(2016, 5, 1), 'k1'): 1, (datetime.date(2016, 5, 2), 'k2'): 2}
Series:
2016-05-01 k1 NaN
2016-05-02 k2 NaN
dtype: float64
DataFrame:
0
2016-05-01 k1 1
2016-05-02 k2 2
Ja, das ist seltsam. Ich bekomme das gleiche Verhalten wie bei der Verwendung von 'datetime.date', aber es funktioniert wie geschrieben, wenn ich stattdessen 'datetime.datetime' verwende. Wenn Sie den Index in der Ausgabe 'NaN' betrachten, hat Pandas jedem Datum eine Zeitkomponente hinzugefügt. Vielleicht gibt es einen Fehler, wo es diese Konvertierung macht? – root
iirc das wurde in 0.18.0 behoben (könnte auch in 0.17.1 sein) – Jeff
@Jeff Ich benutze 0.18.1 und sehe das gleiche Verhalten. – root