wake-up-neo.com

Konvertieren Sie Pandas Series in DateTime in einem DataFrame

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. 

23
1EnemyLeft

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
41
DSM

Ein praktisches Skript:

hour = df['assess_time'].dt.hour.values[0]
1
CodeFarmer
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

0
Shashwat Yadav