我会尽力解释我的问题。我有一个DataFrame,每年每小时有几列和8780行。每行包含:
day work hour ...etc
1 0 0
1 0 1
1 0 2
...
3 1 0
3 1 1
...
3 1 23
两栏'工作' 0和1&1'小时'数字从00-23。我想创建具有特定组的新列,例如:
hour_work = {0:2, 1:2,
2:1, 3:1, 4:1, 5:1, 6:1,
7:3, 8:3,
9:4, 10:4, 11:4,
12:5,
13:4, 14:4, 15:4, 16:4,
17:3, 18:3, 19:3, 20:3, 21:3,
22:1, 23:1}
hour_notwork = {0:2, 1:2,
2:1, 3:1, 4:1, 5:1, 6:1,
7:3, 8:3,
9:4, 10:4, 11:4,
12:5, 13:5,
14:4, 15:4, 16:4, 17:3, 18:3, 19:3,
20:2, 21:2, 22:2, 23:2
}
我需要创建一个新列,根据它是否工作或不工作日(0,1)在groupby(或可能不是)' work&#39后的每个小时映射两个词典;和'小时':
df['hour_group'] = df.groupby(['work', 'hour']).apply(work_func). #where in work is 1
df['hour_group'] = df.groupby(['work', 'hour']).apply(not_work_func). #where in work is 0
所需的输出应该是这样的(根据工作,小时和两个词典创建新列):
day work hour hour_group
1 0 0 2
1 0 1 2
1 0 2 1
1 0 3 1
1 0 4 1
1 0 5 1
1 0 6 1
1 0 7 3
1 0 8 3
1 0 9 4
1 0 10 4
1 0 11 4
1 0 12 5
1 0 13 4
1 0 14 4
1 0 15 4
1 0 16 4
1 0 17 3
1 0 18 3
1 0 19 3
1 0 20 3
1 0 21 2
1 0 22 2
1 0 23 2
....
3 1 0 2
3 1 1 2
3 1 2 2
3 1 3 1
3 1 4 1
3 1 5 1
3 1 6 1
3 1 7 3
3 1 8 3
3 1 9 3
3 1 10 3
3 1 11 3
3 1 12 4
3 1 13 4
3 1 14 4
3 1 15 4
3 1 16 5
3 1 17 5
3 1 18 3
3 1 19 3
3 1 20 3
3 1 21 2
3 1 22 2
3 1 23 1
答案 0 :(得分:0)
我找到了解决问题的方法:
{{1}}