لدي 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 وسحبها في العام والشهر واليوم والساعة والدقيقة والثانية بشكل منفصل؟ أنا جديد نوعا ما على بيثون ، شكرا لمساعدتكم.
لا يمكنك: 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
بعض النصوص المفيدة:
hour = df['assess_time'].dt.hour.values[0]
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