python - 如何为所有员工查找给定月份的所有缺失日期
问题描述
我正在使用 python pandas 来计算员工的效率。我有一个描述某家公司员工的数据框。每个员工都有唯一的员工 ID。数据框显示所有员工的月数记录。因此,每个员工的 DF 可能会缺几天。因此,这些日期范围必须填充为零行,其中列日期为缺失日期,ID 为员工 ID。例子 -
Employee WH Date C3 C4 C5
11 6 2021-06-03 - - -
11 7 2021-06-06
11 8 2021-06-08
13 5 2021-06-01
13 7 2021-06-02
13 7 2021-06-28
员工 ID 11 的缺失日期为 01,02,04,05,07,09---30。员工 ID 13 的缺失日期是 03,--27, 29,30。就像这样,可能有多个员工缺少日期范围。DF 需要填充所有具有 Id 和 date 以及其余列为 0 的缺失值,并重新编制索引。
解决方案
这可以通过重新索引来完成
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.reindex.html
您需要首先构建所需的新索引(所有员工,每日频率),然后将原始数据框中的标识列设置为索引,最后重新索引并将填充值指定为 0。
id_cols = ['Date','Employee']
new_index = pd.MultiIndex.from_product(
[pd.date_range(start='2021-06-01', end='2021-06-30', freq='D'),
list_of_unique_employee_IDs],
names = id_cols
)
df2 = df.set_index(id_cols).reindex(new_index, fill_value = 0)
如果您还没有所有唯一员工 ID 的列表,则可以改为从原始 df 中获取它df.Employee.unique()
如果您想返回默认整数索引而不是保留 Employee 和 Date 的 MultiIndex,您可以.reset_index()
在最后一行的末尾添加一个,它会将 Employee 和 Date 作为列插入数据框中
推荐阅读
- mule - 如何在数据编织中的有效负载中为多个键的值为空的有效负载添加错误?
- java - 如何阻止 JScrollPane 在初始显示时自动滚动到底部?
- react-native - 如果项目数不足以使其可滚动,则不调用 React Native FlatList onEndReached
- arrays - 如何在excel vba动态数组中包含文件系统对象属性
- sql - SSIS Foreach 循环将不同的 SQL Server 视图数据枚举到单个临时表中
- intellij-idea - 在 IntelliJIDEA 中从数据库中添加 POJO
- django - 如何在 DetailView 中执行 POST 请求
- wordpress - 如何在 wordpress 中为优惠券添加唯一网址
- terraform - Terraform GCP:如何将 MIG 连接到后端服务?
- angular - 在angular.json中导入样式还是在styles.scss中导入更好?