亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從另一個 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 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號