Python Pandas Replacing Header with Top Row
I currently have a dataframe that looks like this:
Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4
0 Sample Number Group Number Sample Name Group Name
1 1.0 1.0 s_1 g_1
2 2.0 1.0 s_2 g_1
3 3.0 1.0 s_3 g_1
4 4.0 2.0 s_4 g_2
I'm looking for a way to delete the header row and make the first row the new header row, so the new dataframe would look like this:
Sample Number Group Number Sample Name Group Name
0 1.0 1.0 s_1 g_1
1 2.0 1.0 s_2 g_1
2 3.0 1.0 s_3 g_1
3 4.0 2.0 s_4 g_2
I've tried stuff along the lines of if 'Unnamed' in df.columns:
then make the dataframe without the header df.to_csv(newformat,header=False,index=False)
but I don't seem to be getting anywhere.
new_header = df.iloc[0] #grab the first row for the header
df = df[1:] #take the data less the header row
df.columns = new_header #set the header row as the df header
The dataframe can be changed by just doing
df.columns = df.iloc[0]
df = df[1:]
Then
df.to_csv(path, index=False)
Should do the trick.
If you want a one-liner, you can do:
df.rename(columns=df.iloc[0]).drop(df.index[0])