pandas:通过将日期 (mm/dd/yy) 转换为工作日来创建 'Weekday' DataFrame 列

pandas: Create a 'Weekday' DataFrame column by converting date (mm/dd/yy) to weekday

我正在尝试将日期转换为工作日 - 至少是工作日数字,0 表示星期一,1 表示星期二等。日期是对象数据类型。

当我试图找到 information/help 将日期转换为工作日,或者添加一个名为 'weekday' 的新数据框列并进行转换时,我在 [=27 上找不到任何内容=]

我发现了这个:

data.loc[:,'weekday'] = data.index.weekday

但它似乎不起作用,因为我收到此错误:

AttributeError: 'Int64Index' object has no attribute 'weekday'

没有容易找到的例子。有人可以帮忙吗?

不确定您的数据结构,但如果将它们转换为日期时间,这应该可行:

import pandas as pd

df = pd.DataFrame({'date': ['2014/06/01', '2014/01/01', '2014/08/01','2014/09/01','2014/10/01']})
df = pd.to_datetime(df['date'])

df_weekdays = df.dt.dayofweek

这是一个使用 pandas 创建日历类型表示的示例,将帮助您处理 pandas 中的日期:

Output would look like this:

Code

import pandas as pd
cal = pd.DataFrame(pd.date_range('2016-01-01','2016-01-31'),columns=['DATE'])
#Refer to https://docs.python.org/2/library/time.html for detailed list of format specifiers
cal['DAY'] = cal.DATE.dt.strftime('%a')
cal['day'] = cal.DATE.dt.dayofweek
cal['WEEK'] = cal.DATE.dt.week
cal['DT'] = cal.DATE.dt.day
cal.loc[cal['WEEK'] > 52, 'WEEK'] = 0
cal.set_index('WEEK',inplace=True)
calg = cal.groupby(['day','DAY']).apply(lambda x: x.DT)
calg.unstack(level=[0,1])

Output

day    0   1   2   3   4   5   6
DAY  Mon Tue Wed Thu Fri Sat Sun
WEEK
0    NaN NaN NaN NaN   1   2   3
1      4   5   6   7   8   9  10
2     11  12  13  14  15  16  17
3     18  19  20  21  22  23  24
4     25  26  27  28  29  30  31

查看提供的代码片段和错误消息可以看出您正试图从 integer 索引中提取工作日,这很困难。 ;)

Abbas 和 Tasos 已经展示了如何使用适当的数据类型(类似日期时间的类型)来做到这一点

PS 对未来的一个提示:提问时总是尝试提供 Minimal, Complete, and Verifiable example。如果遇到 pandas 问题,请提供示例 inputoutput 数据集(5- CSV/dict/JSON/Python 代码格式 as text 中的 7 行,因此可以在为您编写答案时使用它)。

这将有助于避免以下情况:"your code isn't working for me" 或 "it doesn't work with my data"。等等