我有一个数据框
data_frame = pd.DataFrame({'id':[1,2,3,4,5,6],'name':["A","B","C","A","B","A"], 'date':["15/03/2019","16/03/2019","15/03/2019","16/03/2019","16/03/2019","16/03/2019"], "conducted":[1,1,1,1,1,1],"present":[1,1,1,1,1,0]})`
结果
我需要将数据框转换为
到目前为止,我尝试了以下方法,
- 查找日期和名称的唯一值
date_unique_list = data_frame.date.unique()name_unique_list = data_frame.name.unique()
结果 :
array(['15/03/2019', '16/03/2019'], dtype=object)array(['A', 'B', 'C'], dtype=object)
- 创建带有日期列和名称行标题的数据框。
data_frame_dummies = pd.get_dummies(date_unique_list,prefix="",prefix_sep="")data_frame_dummies = pd.DataFrame(data_frame_dummies, columns = date_unique_list, index=name_unique_list)
结果 :
15/03/2019 16/03/2019A NaN NaNB NaN NaNC NaN NaN
- 按日期更新每个学生的出勤计数。
-> 我似乎找不到这样做的方法。
回答:
我猜表格内的值是conducted
的sum()
。
您可以使用pandas
的pivot_table()
,并用零填充缺失值fillna(0.0)
,例如:
编辑
包含present
值的计数:
table = pd.pivot_table(data_frame, values=['present'], index=['name'], columns=['date'], aggfunc='count').fillna(0.0)