为了账号安全,请及时绑定邮箱和手机立即绑定

从另一个 Dataframe 填充矩阵

从另一个 Dataframe 填充矩阵

月关宝盒 2023-12-26 15:54:42
我是Python初学者。我在循环填充缺勤矩阵时遇到问题。缺席矩阵:beginning of 2020索引表示从到 的日期today,列表示USER IDs。数据框如下:ID_USER  NOM      PRENOM      DATE_first         DATE_last1        X        X           30/05/2020 00:00   01/06/2020 23:591        X        X           01/06/2020 00:00   02/06/2020 23:592        X        X           01/06/2020 00:00   03/06/2020 23:59和我想要的结果:DATE          user1    user229/05/2020    0        030/05/2020    1        001/06/2020    1        102/06/2020    1        103/06/2020    0        1目标是用1和填充缺席矩阵0。 当和1之间缺少 ID 时。DATE_DEBUT_ABSENCEDATE_FIN_ABSENCE例子 :如果 Dataframe 中和ID_USER=1之间不存在:2020/01/012020/01/05在没有矩阵的情况下columns = 1索引:2020/01/01 = 12020/01/02 = 12020/01/03 = 12020/01/04 = 12020/01/05 = 1这是我开始的代码:for i in agenda.columns:    for j  in absence_df.ID_USER:        if i==j and  agenda.index[i]==absence_df.iloc[j,4]:            agenda.index[i]==1        else :            print('false')    j=j+1     i= i+1              break                          print(agenda)
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

我假设你的日期是日期时间格式,尽管我不确定这在第一次尝试时是否有效(日期在 python 中很棘手)。如果您可以共享数据集的样本,而不仅仅是快照,那就更好了......


import datetime

import pandas as pd


start = datetime.date(2020, 1, 1)

end = datetime.date(2020,1,5)

daterange = pd.date_range(start, end)


users = sorted(list(set(df.ID_USER)))


agenda = pd.DataFrame(index=daterange, columns=users)

agenda.fillna(0, inplace=True)


for date in date_range:

  ix = df[

    (df.DATE_first < date) & (date < df.DATE_last)

  ].index

  users_absent = df.loc[ix, 'ID_USER'].tolist()

  agent.loc[date, users_absent] = 1


查看完整回答
反对 回复 2023-12-26
  • 1 回答
  • 0 关注
  • 45 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信