我有一个数据框
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/2019
A NaN NaN
B NaN NaN
C NaN NaN
->我似乎没有找到解决方法。
答案 0 :(得分:3)
我猜表中的值是sum()
中的conducted
。
您可以使用pandas
pivot_table()
,并用零fillna(0.0)
填充缺失值,例如:
import numpy as np
table = pd.pivot_table(data_frame, values=['conducted'], index=['name'], columns=['date'], aggfunc=np.sum).fillna(0.0)
编辑
具有计数的present
值:
table = pd.pivot_table(data_frame, values=['present'], index=['name'], columns=['date'], aggfunc='count').fillna(0.0)