熊猫:创造一个“工作日”' DataFrame列通过将日期(mm / dd / yy)转换为工作日

时间:2016-04-24 03:55:14

标签: python date pandas dataframe weekday

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

当我尝试查找有关将日期转换为工作日的信息/帮助时,或者添加名为“工作日”的新数据框列'并且转换到那里,我在Python上找不到任何东西

我发现了这个:

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

但它似乎无法正常工作,因为我收到了这个错误:

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

没有简单的例子。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

不确定数据的结构,但如果将它们转换为日期时间,则应该可以使用:

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

答案 1 :(得分:2)

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

Abbas和Tasos已经展示了如何使用正确的数据类型(类似日期时间)

PS暗示未来:提问时总是试图提供Minimal, Complete, and Verifiable example。如果是 pandas 问题,请提供示例输入输出数据集(CSV / dict / JSON / Python代码格式中的5-7行< em> as text ,所以人们可以在为你编写答案时使用它。

这有助于避免以下情况:&#34;您的代码不适合我&#34;或者&#34;它不能处理我的数据&#34;。等

答案 2 :(得分:1)

以下是使用pandas创建日历类表示的示例,它将帮助您在熊猫中操作日期:

  

输出如下所示:

enter image description here

  

<强>代码

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

<强>输出

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