2016-04-24 1067 views
-1

我试图将日期转换为星期几 - 至少星期几数字,星期一为0,星期二为1等。日期是一个对象数据类型。pandas:通过将日期(mm/dd/yy)转换为星期几创建'Weekday'DataFrame列

当我尝试找资料/帮助日期转换为工作日,或添加新的数据框柱称为“平日”,做转化为在那里,我不能Python的

发现任何东西,我发现这个:

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

,但它似乎没有工作,因为我得到这个错误:

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

有没有容易找到例子。谁能帮忙?

+0

你可以请你多一些你的代码?数据来自哪里? – WreckeR

+0

这就是我所拥有的一切;该代码是我正在寻找..数据是成千上万的记录.. – Theant6118

+0

我猜你正在使用'熊猫'。我已经添加了该标签,希望有人知道这个模块将能够提供帮助。 – WreckeR

回答

2

看着代码和错误消息的提供件中可以看出,你正试图从整数指数,这是很难提取工作日。 ;)

阿巴斯和TASOS已经展示了如何做到这一点使用正确的数据类型(日期时间喜欢的类型)

PS一个提示为未来:问问题时总是试图提供一个Minimal, Complete, and Verifiable example。在大熊猫情况下问题,请提供样品输入输出数据集(5-7行的CSV /字典/ JSON/Python代码格式文本,所以编码为你找出答案。一个人可以使用它)。

这将有助于避免像“您的代码不适合我”或“它不适用于我的数据”的情况。等

+0

谢谢MaxU ..我只是想到了你的第一个说法 - 我是新来的游戏:-)。并感谢您的建议..非常感谢 – Theant6118

+0

@Theant6118,总是乐于帮助:) – MaxU

2

不知道你的数据的结构,但如果你把他们DATETIME这应该工作:

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

不,它不工作..不知道该从哪里出发..谢谢 – Theant6118

1

下面是创建一个使用熊猫表示的日历种类的例子,将协助您与操纵日期在大熊猫:

Output would look like this:

enter image description here

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