Python Pandas - 每天索引作业数据
Posted
技术标签:
【中文标题】Python Pandas - 每天索引作业数据【英文标题】:Python Pandas - Indexing job data per day 【发布时间】:2022-01-07 22:44:44 【问题描述】:我有一个月的员工和工作日期的数据框。我需要像这样为每一天的每项工作编制索引。
employee | job_time | nth_job |
---|---|---|
Harry | 1/11/21 9:00 | 1 |
Harry | 1/11/21 9:30 | 2 |
Harry | 1/11/21 10:00 | 3 |
Harry | 2/11/21 9:00 | 1 |
Harry | 2/11/21 9:30 | 2 |
Ben | 1/11/21 9:00 | 1 |
Ben | 1/11/21 9:30 | 2 |
Ben | 1/11/21 10:00 | 3 |
Ben | 2/11/21 9:00 | 1 |
Ben | 2/11/21 9:30 | 2 |
谢谢。
【问题讨论】:
【参考方案1】:将列转换为日期时间,因此可以将GroupBy.cumcount
与每月期间一起使用:
#format MM/DD/YY HH:MM
df['job_time'] = pd.to_datetime(df['job_time'], format='%m/%d/%y %H:%M')
#format DD/MM/YY HH:MM
#df['job_time'] = pd.to_datetime(df['job_time'], format='%d/%m/%y %H:%M')
df['nth'] = df.groupby(['employee', df['job_time'].dt.to_period('m')]).cumcount().add(1)
print (df)
employee job_time nth_job nth
0 Harry 2021-01-11 09:00:00 1 1
1 Harry 2021-01-11 09:30:00 2 2
2 Harry 2021-01-11 10:00:00 3 3
3 Harry 2021-02-11 09:00:00 1 1
4 Harry 2021-02-11 09:30:00 2 2
5 Ben 2021-01-11 09:00:00 1 1
6 Ben 2021-01-11 09:30:00 2 2
7 Ben 2021-01-11 10:00:00 3 3
8 Ben 2021-02-11 09:00:00 1 1
9 Ben 2021-02-11 09:30:00 2 2
【讨论】:
感谢您的快速回复,直到当月 13 日它在英国和美国日期格式之间切换时都运行良好,知道为什么会发生这种情况吗? @bevloy -2/11/21 9:00
的日期是 11 月还是 2 月?
@bevloy - 答案已编辑。
我应该澄清一下,我使用的是英式格式。所以 dd/mm/yy。所以那个日期是 11 月 2 日。
我使用了这个并返回了这个错误。 ValueError:时间数据 '01/10/2021 11:33' 与格式 '%m/%d/%y %H:%M' 不匹配(匹配)以上是关于Python Pandas - 每天索引作业数据的主要内容,如果未能解决你的问题,请参考以下文章
pandas读取csv数据index_col参数指定作为行索引的数据列索引列表形成复合(多层)行索引使用reset_index函数把行索引重置为列数据(原来的行索名称转化为列索引的最外层)
pandas读取csv数据index_col参数指定作为行索引的数据列索引列表形成复合(多层)行索引使用reset_index函数把行索引重置为列数据(原来的行索名称转化为列索引的最外层)
pandas读取csv数据使用reset_index函数把行索引重置为列数据(col_level参数设置原来的行索名称转化为列索引的指定层索引col_fill参数为缺失内容的层进行填充)