Python 3.x 从一个热编码输入按顺序添加工作日
我试图转换一个稀疏的工作日格式,按顺序表示星期,从一个附加列表中添加上下文信息 举例说明:Python 3.x 从一个热编码输入按顺序添加工作日,python-3.x,pandas,Python 3.x,Pandas,我试图转换一个稀疏的工作日格式,按顺序表示星期,从一个附加列表中添加上下文信息 举例说明: weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] print(df) employee_name rest_day A
weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
print(df)
employee_name rest_day
Alex 0
Alex 0
Alex 0
Alex 0
Alex 0
Alex 0
Alex 1
Frank 1
Frank 0
Frank 0
Frank 0
Frank 1
Frank 0
Frank 0
...
亚历克斯周日休息,弗兰克周一和周五休息
我想添加一个新列,其中包含上述列表中的值,表示工作日为:
print(final_df)
employee_name rest_day weekday
Alex 0 Monday
Alex 0 Tuesday
Alex 0 Wednesday
Alex 0 Thursday
Alex 0 ...
Alex 0
Alex 1 Sunday
Frank 1 Monday
Frank 0 ...
Frank 0
Frank 0
Frank 1
Frank 0
Frank 0 Sunday
...
假设每个
employee\u name
正好有7行,您可以使用:
weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
df['weekday'] = df.groupby('employee_name').transform(lambda x: weekdays)
结果:
print(df)
employee_name rest_day weekday
0 Alex 0 Monday
1 Alex 0 Tuesday
2 Alex 0 Wednesday
3 Alex 0 Thursday
4 Alex 0 Friday
5 Alex 0 Saturday
6 Alex 1 Sunday
7 Frank 1 Monday
8 Frank 0 Tuesday
9 Frank 0 Wednesday
10 Frank 0 Thursday
11 Frank 1 Friday
12 Frank 0 Saturday
13 Frank 0 Sunday
Use可以使用
date\u range
更直观地获取周-日名称
from itertools import cycle
seq = cycle(pd.date_range('2021-05-24', '2021-05-30').to_series().dt.day_name().to_list())
df['day'] = [next(seq) for count in range(df.shape[0])]
输出
employee_name rest_day weekday
0 Alex 0 Monday
1 Alex 0 Tuesday
2 Alex 0 Wednesday
3 Alex 0 Thursday
4 Alex 0 Friday
5 Alex 0 Saturday
6 Alex 1 Sunday
7 Frank 1 Monday
8 Frank 0 Tuesday
9 Frank 0 Wednesday
10 Frank 0 Thursday
11 Frank 1 Friday
12 Frank 0 Saturday
13 Frank 0 Sunday