pandas从单条目数据集生成宽表

需求

场景

从医院数据库中导出了大量的体检数据,但体检数据表中,每一行代表某人某次体检的某一项体检的结果。目的想将每一个人的每一次体检结果作为一行存储,每一列为体检项。

示例

原始数据

StuID Type Num
0 111021 Math 89
1 111021 English 93
2 312983 English 91
3 314621 English 82
4 314621 Math 92
5 112341 Math 82

目的:转换成如下表格

StuID English Math
0 111021 93 89
1 312983 91 NaN
2 314621 82 92
3 112341 NaN 82

方案一

Created with Raphaël 2.2.0 开始 提取唯一ID(可以是一行或者多行唯一确定) 确定并创建结果的DataFram结构,导入唯一ID 通过唯一ID,更新结果DF的数据 结束
  • 具体代码如下
#将’B'列的类别调整为行。
#1
num = df[~df.duplicated(subset=['StuID'])].loc[:,'StuID'].to_list()
#2
result_df = pd.DataFrame({
    
    'StuID': np.array(num)},columns=['StuID','English','Math'])
#3
for i in df.index:
    t = df.loc[i,'Type']
    num = df.loc[i,'StuID']
    result_df.loc[result_df['StuID'] == num,[t]] = df.loc[i,'Num']
print(result_df)
  • 结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013894391/article/details/104525345