需要将数据框的列值转换为单独的列,并使用panda填充每个单元格的计数值

时间:2019-07-04 07:33:02

标签: python pandas dataframe machine-learning

我有一个数据框

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]})`

结果

DataSet


我需要将数据帧转换为

ResultDataSet


到目前为止,我已经尝试过了

  1. 找到日期和名称的唯一值
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)
  1. 使用日期列和名称行标题创建数据框。
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
  1. 明智地更新每个学生的在校人数。

->我似乎没有找到解决方法。

1 个答案:

答案 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)

enter image description here