Ich habe einen Pandas-DataFrame wie folgt
ReviewID ID Type TimeReviewed
205 76032930 51936827 ReportID 2015-01-15 00:05:27.513000
232 76032930 51936854 ReportID 2015-01-15 00:06:46.703000
233 76032930 51936855 ReportID 2015-01-15 00:06:56.707000
413 76032930 51937035 ReportID 2015-01-15 00:14:24.957000
565 76032930 51937188 ReportID 2015-01-15 00:23:07.220000
>>> type(df)
<class 'pandas.core.frame.DataFrame'>
TimeReviewed ist ein Serientyp
>>> type(df.TimeReviewed)
<class 'pandas.core.series.Series'>
Ich habe es unten versucht, aber es ändert sich immer noch nicht der Serientyp
import pandas as pd
review = pd.to_datetime(pd.Series(df.TimeReviewed))
>>> type(review)
<class 'pandas.core.series.Series'>
Wie kann ich den Typ df.TimeReviewed in DateTime ändern und Jahr, Monat, Tag, Stunde, Minute, Sekunde separat herausziehen? Ich bin ein bisschen neu in Python, danke für Ihre Hilfe.
Sie können nicht: DataFrame
Spalten sind per Definition Series
. Wenn Sie also die dtype
(die Art aller Elemente) datetime-artig machen, können Sie über den .dt
-Zugriff ( docs ) auf die gewünschten Mengen zugreifen.
>>> df["TimeReviewed"] = pd.to_datetime(df["TimeReviewed"])
>>> df["TimeReviewed"]
205 76032930 2015-01-24 00:05:27.513000
232 76032930 2015-01-24 00:06:46.703000
233 76032930 2015-01-24 00:06:56.707000
413 76032930 2015-01-24 00:14:24.957000
565 76032930 2015-01-24 00:23:07.220000
Name: TimeReviewed, dtype: datetime64[ns]
>>> df["TimeReviewed"].dt
<pandas.tseries.common.DatetimeProperties object at 0xb10da60c>
>>> df["TimeReviewed"].dt.year
205 76032930 2015
232 76032930 2015
233 76032930 2015
413 76032930 2015
565 76032930 2015
dtype: int64
>>> df["TimeReviewed"].dt.month
205 76032930 1
232 76032930 1
233 76032930 1
413 76032930 1
565 76032930 1
dtype: int64
>>> df["TimeReviewed"].dt.minute
205 76032930 5
232 76032930 6
233 76032930 6
413 76032930 14
565 76032930 23
dtype: int64
Wenn Sie keine ältere Version von pandas
verwenden, können Sie jederzeit manuell auf die verschiedenen Elemente zugreifen (nachdem Sie sie in eine datetime-dtyped-Serie konvertiert haben). Es wird langsamer sein, aber manchmal ist das kein Problem:
>>> df["TimeReviewed"].apply(lambda x: x.year)
205 76032930 2015
232 76032930 2015
233 76032930 2015
413 76032930 2015
565 76032930 2015
Name: TimeReviewed, dtype: int64
Ein praktisches Skript:
hour = df['assess_time'].dt.hour.values[0]
df=pd.read_csv("filename.csv" , parse_dates=["<column name>"])
type(df.<column name>)
beispiel: Wenn Sie einen Tag, der ursprünglich eine Zeichenfolge ist, in einen Zeitstempel in Pandas konvertieren möchten
df=pd.read_csv("weather_data2.csv" , parse_dates=["day"])
type(df.day)
Die Ausgabe ist pandas.tslib.Timestamp