Reputation: 69
I've a similar dataframe like the one below.
a = pd.DataFrame({'Unnamed:0':[np.nan,'T1','T2','T3','T4'],
'Unnamed:1':['A',33,52,55,21],
'Unnamed:2':['B',2.1,2.1,2.1,2.1],
'Unnamed:3':['C',22,23,14,19]})
Unnamed:0 Unnamed:1 Unnamed:2 Unnamed:3
0 NaN A B C
1 T1 33 2.1 22
2 T2 52 2.1 23
3 T3 55 2.1 14
4 T4 21 2.1 19
I'm trying to make the first row and column as the headers of this dataframe. I've tried with this
a.columns = a.iloc[0]
a = a[1:]
a.set_index(a.columns[0])
this generates the dataframe like below. Is there a way to remove the index header 'nan' here?
A B C
nan
T1 33 2.1 22
T2 52 2.1 23
T3 55 2.1 14
T4 21 2.1 19
Upvotes: 1
Views: 1526
Reputation: 862511
a.columns = a.iloc[0]
a = a[1:]
a.set_index(a.columns[0]).rename_axis(index=None, columns=None)
Or for one line solution use DataFrame.set_axis
for set columns names:
a = (a.iloc[1:]
.set_axis(a.iloc[0], axis=1)
.set_index(a.iat[0,0])
.rename_axis(index=None, columns=None))
print (a)
A B C
T1 33 2.1 22
T2 52 2.1 23
T3 55 2.1 14
T4 21 2.1 19
Upvotes: 1