我有一个很大的pandas DataFrame(大约1050000个条目)。其中一列是datetime
类型。我想提取年份、月份和星期几。问题在于下面显示的代码非常慢:
df['Year'] = pd.DatetimeIndex(df.Date).year
df['Month'] = pd.DatetimeIndex(df.Date).month
df['Weekday'] = pd.DatetimeIndex(df.Date).weekday
更新:
数据看起来像这样:
Update:
数据看起来像这样:
Id DayOfWeek Date
0 1 5 2015-07-31
1 2 4 2015-07-30
2 3 3 2015-07-29
3 4 2 2015-07-28
4 5 1 2015-07-27
如果我这样做:
df = pd.read_csv("data.csv", parse_dates=[2])
df['Year'] = pd.to_datetime(df['Date']).year
df['Month'] = pd.to_datetime(df['Date']).month
df['Weekday'] = pd.to_datetime(df['Date']).weekday
那么错误就是:
AttributeError: 'Series' object has no attribute 'year'
df['Date'] = pd.to_datetime(df['Date'])
来进行转换。 - Alex Rileyread_csv
推断列的数据类型,这样会更容易。尝试使用pd.read_csv("data.csv", parse_dates=[2])
,让函数在读取数据时解析日期时间值。 - Alex Riley