我是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
添加回答
舉報
0/150
提交
取消