从另一个 Dataframe 填充矩阵

我是Python初学者。

我在循环填充缺勤矩阵时遇到问题。

缺席矩阵:

https://img1.sycdn.imooc.com/658a8751000194e102640269.jpg

beginning of 2020索引表示从到 的日期today,列表示USER IDs。


数据框如下:


ID_USER  NOM      PRENOM      DATE_first         DATE_last

1        X        X           30/05/2020 00:00   01/06/2020 23:59

1        X        X           01/06/2020 00:00   02/06/2020 23:59

2        X        X           01/06/2020 00:00   03/06/2020 23:59

和我想要的结果:


DATE          user1    user2

29/05/2020    0        0

30/05/2020    1        0

01/06/2020    1        1

02/06/2020    1        1

03/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 = 1

  • 2020/01/02 = 1

  • 2020/01/03 = 1

  • 2020/01/04 = 1

  • 2020/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)


月关宝盒
浏览 86回答 1
1回答

森栏

我假设你的日期是日期时间格式,尽管我不确定这在第一次尝试时是否有效(日期在 python 中很棘手)。如果您可以共享数据集的样本,而不仅仅是快照,那就更好了......import datetimeimport pandas as pdstart = 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:&nbsp; ix = df[&nbsp; &nbsp; (df.DATE_first < date) & (date < df.DATE_last)&nbsp; ].index&nbsp; users_absent = df.loc[ix, 'ID_USER'].tolist()&nbsp; agent.loc[date, users_absent] = 1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python