Es sieht aus wie Sie müssen explizit im Jahrhundert von splice (um es als 20XX analysiert zu werden vermeiden):
In [11]: df = pd.DataFrame([["12/31/50", "Argentina"], ["12/31/51", "Argentina"], ["12/31/52", "Argentina"]], columns=["Year", "Country"])
In [12]: df
Out[12]:
Year Country
0 12/31/50 Argentina
1 12/31/51 Argentina
2 12/31/52 Argentina
ohne Spleißen:
In [13]: pd.to_datetime(df["Year"])
Out[13]:
0 2050-12-31
1 2051-12-31
2 2052-12-31
Name: Year, dtype: datetime64[ns]
In [14]: pd.to_datetime(df["Year"], format="%m/%d/%y")
Out[14]:
0 2050-12-31
1 2051-12-31
2 2052-12-31
Name: Year, dtype: datetime64[ns]
mit Spleißen:
In [15]: df["Year"].apply(lambda s: s[:-2] + "19" + s[-2:])
Out[15]:
0 12/31/1950
1 12/31/1951
2 12/31/1952
Name: Year, dtype: object
In [16]: pd.to_datetime(df["Year"].apply(lambda s: s[:-2] + "19" + s[-2:]), format="%m/%d/%Y")
Out[16]:
0 1950-12-31
1 1951-12-31
2 1952-12-31
Name: Year, dtype: datetime64[ns]
Hinweis: Sie können die Analyse in der Anwendung versuchen (die kann effizienter sein).
Sie können das Jahr von einer Datetime-Serie mit dem .dt Accessor herausziehen:
In [21]: df["Year"] = pd.to_datetime(df["Year"].apply(lambda s: s[:-2] + "19" + s[-2:]), format="%m/%d/%Y")
In [22]: df["Year"].dt.year
Out[22]:
0 1950
1 1951
2 1952
Name: Year, dtype: int64
Es leitet das Datum korrekt ab, aber das Anhängen von .year ergibt einen Fehler: AttributError: 'Series' Objekt hat kein Attribut 'Jahr' –
Es leitet es tatsächlich falsch, Ändern 1950-1965 zu 2050-2065 –
Das sollte sortieren Sie – hd1