it-swarm.asia

تحويل Pandas Series إلى DateTime في DataFrame

لدي Pandas DataFrame على النحو التالي

        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 هو نوع السلسلة

>>> type(df.TimeReviewed)
<class 'pandas.core.series.Series'>

لقد جربت أدناه ، ولكن لا يزال لا يغير نوع السلسلة

import pandas as pd
review = pd.to_datetime(pd.Series(df.TimeReviewed))
>>> type(review)
<class 'pandas.core.series.Series'>

كيف يمكنني تغيير df.TimeReviewed إلى نوع DateTime وسحبها في العام والشهر واليوم والساعة والدقيقة والثانية بشكل منفصل؟ أنا جديد نوعا ما على بيثون ، شكرا لمساعدتكم.

31
1EnemyLeft

لا يمكنك: DataFrame الأعمدة Series ، بحكم التعريف. ومع ذلك ، إذا قمت بعمل dtype (نوع كل العناصر) مثل وقت ، فيمكنك الوصول إلى الكميات التي تريدها عبر .dt accessor ( docs ):

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

إذا علقت باستخدام إصدار قديم من pandas ، فيمكنك دائمًا الوصول إلى العناصر المختلفة يدويًا (مرة أخرى ، بعد تحويلها إلى سلسلة على شكل datetime). سيكون أبطأ ، لكن في بعض الأحيان لا تكون هذه مشكلة:

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

بعض النصوص المفيدة:

hour = df['assess_time'].dt.hour.values[0]
1
CodeFarmer
df=pd.read_csv("filename.csv" , parse_dates=["<column name>"])

type(df.<column name>)

مثال: إذا كنت تريد تحويل اليوم الذي يكون في البداية سلسلة إلى الطابع الزمني في Pandas

df=pd.read_csv("weather_data2.csv" , parse_dates=["day"])

type(df.day)

الإخراج سيكون pandas.tslib.Timestamp

0
Shashwat Yadav