pd.read_csv()
的数据:
Name Job Place Age
John None None None
None Doctor None None
None None UK None
None None None 50
Alex None None None
None Engr None None
None None US None
None None None 45
单行的信息包含在对角线中。有没有办法将对角线转换并折叠成行?结果数据帧将有2行。
尝试使用df.ffill()
/ df.bfill()
和df.drop_duplicates()
,但这不起作用。
答案 0 :(得分:3)
您可以使用:
#change string None to NaN
df = df.replace({'None':np.nan})
#multiindex
df.index = [df.index, df.Name.notnull().cumsum() - 1]
#remove nan by stack
df = df.stack().reset_index(name='val')
#pivoting
df = df.pivot(index='Name', columns='level_2', values='val')
print (df)
level_2 Age Job Name Place
Name
0 50 Doctor John UK
1 45 Engr Alex US