对于这种csv文件,用pandas怎么可以将红圈部分的数据补全,每个学生都考了四门,怎样可以进行数据补全,整个csv文件也没有空值。
求大佬支援
对于这种csv文件,用pandas怎么可以将红圈部分的数据补全,每个学生都考了四门,怎样可以进行数据补全,整个csv文件也没有空值。
求大佬支援
试下这种方式:
先构造一个姓名和科目的二维表, 然后merge. 可以对缺失值进行填充
import pandas as pd
import numpy as np
data = pd.read_excel('c:/users/yyz/desktop/123.xlsx')
lis1 = data['科目'].unique().tolist()
lis2 = data['姓名'].unique().tolist()
data2 = pd.DataFrame([[i,j] for i in lis2 for j in lis1],columns=['姓名','科目'])
result = pd.merge(data,data2,on=['姓名','科目'],how='outer').sort_values(by=['姓名','科目']).reset_index(drop=True)
print(result)
科目 姓名 成绩
0 algorithm zhaoyuchen 21.0
1 computer zhaoyuchen 22.0
2 english zhaoyuchen 20.0
3 math zhaoyuchen NaN
4 algorithm zhouqi 19.0
5 computer zhouqi NaN
6 english zhouqi 18.0
7 math zhouqi NaN
8 algorithm zhoutao 15.0
9 computer zhoutao 17.0
10 english zhoutao 14.0
11 math zhoutao 16.0
12 algorithm zss 11.0
13 computer zss 13.0
14 english zss 10.0
15 math zss 12.0