跳过行,但在 python 中读取 csv 时获取信息

Skip rows, but take information when reading csv in python

我的 csv 文件格式如下:

NAME: John
AGE: 19
HEIGHT: 178
COURSE; SEMESTER; GRADE; RESULT
MATH;1;10;PASS
BIOLOGY;2;5;FAIL

所以,headers 在一些行之后,我可以在阅读时跳过它,没有问题,但我希望第一行成为列,这样我就可以将所有文件合并到一个数据框中.第一个应该是这样来的:

NAME; AGE; HEIGHT; COURSE; SEMESTER; GRADE; RESULT
John; 19; 178;MATH;1;10;PASS
John; 19; 178; BIOLOGY;2;5;FAIL

嗯,这对我来说是一次很好的培训,所以谢谢你:)

d1 = '''
NAME: John
AGE: 19
HEIGHT: 178
COURSE; SEMESTER; GRADE; RESULT
MATH;1;10;PASS
BIOLOGY;2;5;FAIL
'''
df1 = pd.read_csv(StringIO(d1), sep=':', nrows=3, header=None)
df2 = pd.read_csv(StringIO(d1), sep=';', skiprows=4)

df1 = df1.T #transpose
df1.columns = df1.iloc[0] #make index[0] new header
df1 =  df1.drop([0]) #remove old index[0] which is now a duplicate

df3 = pd.concat([df1, df2], axis=1).fillna(method="bfill") #concat and fill NaN
df3
index NAME AGE HEIGHT COURSE SEMESTER GRADE RESULT
0 John 19 178 MATH 1 10 PASS
1 John 19 178 BIOLOGY 2 5 FAIL

注意:也许您应该尝试改进 scrap/clean/fill 您的 csv? ;)