根据python中的多个列添加星期几列

根据python中的多个列添加星期几列,python,pandas,Python,Pandas,如何根据年,月,日值,将周中的天列(周中的天,例如1=Mon,2=Tue)添加到df1,如下所示: year month day A B C D day_of_week 0 2019 1 1 26.2 20.2 0.0 32.4 2 1 2019 1 2 22.9 20.3 0.0 10.0 3 2 2019 1 3 24.8 18.4

如何根据
值,将
周中的天
列(周中的天,例如1=Mon,2=Tue)添加到
df1
,如下所示:

    year month day  A       B       C   D       day_of_week
0   2019    1   1   26.2    20.2    0.0 32.4        2
1   2019    1   2   22.9    20.3    0.0 10.0        3
2   2019    1   3   24.8    18.4    0.0 28.8        4
3   2019    1   4   26.6    18.3    0.0 33.5        5
4   2019    1   5   28.3    20.9    0.0 33.4        6

使用
pd.to_datetime
.dt.dayofweek
属性加上
1

df['day_of_week'] = pd.to_datetime(df[['year', 'month', 'day']], 
                                   errors='coerce').dt.dayofweek + 1

Out[410]:
   year  month  day     A     B    C     D  day_of_week
0  2019      1    1  26.2  20.2  0.0  32.4            2
1  2019      1    2  22.9  20.3  0.0  10.0            3
2  2019      1    3  24.8  18.4  0.0  28.8            4
3  2019      1    4  26.6  18.3  0.0  33.5            5
4  2019      1    5  28.3  20.9  0.0  33.4            6

如果您还需要日期名称,可以使用
日历

import datetime
import calendar

def findDay(date):
    day_number = datetime.datetime.strptime(date, '%d %m %Y').weekday() + 1
    day_name = calendar.day_name[day_number-1]
    return (day_number, day_name)
您可以从
year,month,day
列中使用类似于
date=f'{day}{month}{year}'
的内容,以
str
格式生成日期


然后,您所要做的就是在新的日期列上应用上面的函数。该函数将返回一个元组,其中包含一周的天数和日期名称

datetime.datetime.today().weekday()
应该完成这项工作。但周一是0,周日是6。所以,您需要添加一个,为什么它在解析时返回
语法错误:意外的EOF
?这是什么意思?@nilsinelabore:your
year
month
day
中的某些值无效。我添加了
强制
以忽略它们。请参阅我的最新答案。