Im Anschluss an Reading CSV file in Pandas with historical dates Ich habe einige CSV-Daten in der Form:Gruppierung Periode Reihenwert in Pandas
Object,Earliest Date
Object1,01/01/2000
Object2,01/01/1760
Object3,01/01/1520
...
, die ich jetzt in Pandas gelesen habe (Zeitraum historische Daten zu handhaben verwenden) und eine Reihe erstellen. Ich versuche, die Serie in Jahrzehnte zu zerlegen, stolpere aber darauf, die Periodenwerte in die Formgruppe zu bekommen, erwartet sie. Bisher habe ich versucht (wo s ist die Serie erstellt from_csv):
def dt_parse(s):
try:
d,m,y = s.split('/')
return pd.Period(year=int(y), month=int(m), day=int(d), freq='D')
except:
return pd.NaT
s2 = s['Earliest Date'].apply(dt_parse) #Create Period values
pi = pd.PeriodIndex(s2)
decades = pi.groupby(pd.Grouper(freq="120M")).count()
, die mit fehlschlägt:
TypeError: Argument 'labels' has incorrect type (expected numpy.ndarray, got TimeGrouper)
zur Gruppe Der Versuch, auf sie als Serie:
decades = s2.groupby(pd.Grouper(freq="120M")).count()
schlägt fehl mit:
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'
Versuch zu Gruppe auf sie als Datenrahmen:
df = pd.DataFrame(s2)
decades = df.groupby(pd.Grouper(freq="120M", key='Earliest Date')).size()
nicht mit:
AttributeError: 'Index' object has no attribute 'to_timestamp'
nicht sicher, wie ich es sonst zu tun?
was macht dt_parse? Ich vermute, dass 'as_index = False' an df.groupby() übergeben wird, was Sie wollen. – Thtu
dt_parse gibt das Datum als Periode zurück (siehe ersten Link). Beim Aufruf von df.groupby as_index = False hinzugefügt (ohne den Schlüssel arg, da scheint es nicht zu gelten), wird jetzt der gleiche Fehler wie bei einer Serie angezeigt (TypeError: Nur gültig mit DatetimeIndex, TimedeltaIndex oder PeriodIndex, aber eine Instanz von 'Index') – Richard