1. Overview
This guide describes how to convert first or other rows as a header in Pandas DataFrame.
We will cover several different examples with details.
If you are using read_csv() method you can learn more
- about headers: How to Read Excel or CSV With Multiple Line Headers Using Pandas
- How to Reset Column Names (Index) in Pandas
2. Setup
We are going to work with simple DataFrame created by:
import pandas as pd
df = pd.DataFrame([('head_1', 'head_2', 'head_3' ),
('val_11','val_12','val_13'),
('val_21','val_22','val_23'),
('val_31','val_32','val_33')])
Final DataFrame looks like:
0 | 1 | 2 | |
---|---|---|---|
0 | head_1 | head_2 | head_3 |
1 | val_11 | val_12 | val_13 |
2 | val_21 | val_22 | val_23 |
3 | val_31 | val_32 | val_33 |
From this DataFrame we can conclude that the first row of it should be used as a header.
3. Using First Row as a Header with df.rename()
The first solution is to combine two Pandas methods:
The method .rename(columns=)
expects to be iterable with the column names. To select the first row we are going to use iloc
- df.iloc[0]
.
Finally we need to drop the first row which was used as a header by drop(df.index[0])
:
df.rename(columns=df.iloc[0]).drop(df.index[0])
The result is:
head_1 | head_2 | head_3 | |
---|---|---|---|
1 | val_11 | val_12 | val_13 |
2 | val_21 | val_22 | val_23 |
3 | val_31 | val_32 | val_33 |
For other rows we can change the index - 0. For example to use the last row as header: -1 - df.iloc[-1]
.
To make the change permanent we need to use inplace = True
or reassign the DataFrame.
4. Using First Row as a Header with pd.DataFrame()
Another solution is to create new DataFrame by using the values from the first one - up to the first row: df.values[1:]
Use the column header from the first row of the existing DataFrame.
pd.DataFrame(df.values[1:], columns=df.iloc[0])
The result is exactly the same as the previous solution.
There are several differences:
- This solution might be slower for bigger DataFrames
- It creates new DataFrame
- It may change the dtypes of the new DataFrame
5. Conclusion
In this short post we saw how to use a row as a header in Pandas. We covered also several Pandas methods like: iloc()
, rename()
and drop()