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常用

pandas读取csv数据index_col参数指定作为行索引的数据列索引列表形成复合(多层)行索引使用reset_index函数把行索引重置为列数据(原来的行索名称转化为列索引的最外层)

pandas读取csv数据index_col参数指定作为行索引的数据列索引列表形成复合(多层)行索引使用reset_index函数把行索引重置为列数据(原来的行索名称转化为列索引的最外层)

数据处理基石:Pandas数据初探索

pandas读取csv数据使用reset_index函数把行索引重置为列数据(col_level参数设置原来的行索名称转化为列索引的指定层索引col_fill参数为缺失内容的层进行填充)

使用 pandas 追加数据和重写 CSV 时删除索引 [重复]