我想使用 for 回圈填充資料框。其中一列是一個串列。這個串列在每次迭代開始時都是空的,一個元素被添加或洗掉。
當我在每次迭代時列印我的串列時,我得到了正確的結果,但是當我列印我的資料框時,我在每一行上都得到了相同的串列:
你看看我的代碼,我更新的串列是 list_employe。魔法應該發生在最后 3 行,但它沒有。
有沒有人知道為什么串列以一種方式更新,而資料框只記錄所有行的最后一次更新
list_employe = []
total_employe = 0
rows=[]
shiftday = example['SHIFT_DATE'].dt.strftime('%Y-%m-%d').unique().tolist()
for i in shiftday:
shift_day = example[example['SHIFT_DATE'] == i]
list_employe_shift = example[example['SHIFT_DATE']==i]['EMPLOYEE_CODE_POS_UPPER'].unique().tolist()
new_employe = 0
end_employe = 0
for k in list_employe_shift:
shift_days_emp = shift_day[shift_day['EMPLOYEE_CODE_POS_UPPER'] == k]
days = shift_days_emp.iloc[0]['last_day']
#print(days)
if k in list_employe:
if days>1:
end_employe= end_employe 1
total_employe = total_employe-1
list_employe.remove(k)
else:
new_employe = new_employe 1
total_employe = total_employe 1
list_employe.extend([k])
day = i
total_emp = total_employe
new_emp = new_employe
end_emp = end_employe
rows.append([day, total_emp, new_emp, end_emp, list_employe])
print(list_employe)
df = pd.DataFrame(rows, columns=["day", "total_employe", "new_employe", "end_employe", "list_employe"])
uj5u.com熱心網友回復:
該串列list_employe始終與您附加到該串列的物件相同rows。你需要做的來解決這個問題是在底部的第三行:rows.append([day, total_emp, new_emp, end_emp, list(list_employe)])
在每次迭代時創建一個新串列
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376293.html
