To transpose Pandas DataFrame:
df = df.transpose()
Let’s see how to apply the above syntax by reviewing 3 cases of:
- Transposing a DataFrame with a default index
- Transposing a DataFrame with a tailored index
- Importing a CSV file and then transposing the DataFrame
Case 1: Transpose Pandas DataFrame with a Default Index
To start with a simple example, let’s create a DataFrame with 3 columns:
import pandas as pd data = {'A': [11, 22, 33], 'B': [44, 55, 66], 'C': [77, 88, 99] } df = pd.DataFrame(data) print(df)
Run the code in Python, and you’ll get the following DataFrame (with a default numeric index that starts from 0 as highlighted in yellow):
A B C
0 11 44 77
1 22 55 88
2 33 66 99
You can then add df = df.transpose() to the code in order to transpose the DataFrame:
import pandas as pd data = {'A': [11, 22, 33], 'B': [44, 55, 66], 'C': [77, 88, 99] } df = pd.DataFrame(data) df = df.transpose() print(df)
You’ll now get the transposed DataFrame:
0 1 2
A 11 22 33
B 44 55 66
C 77 88 99
Case 2: Transpose Pandas DataFrame with a Tailored Index
What if you want to assign your own tailored index, and then transpose the DataFrame?
For example, let’s add the following index to the DataFrame:
index=['X', 'Y', 'Z']
Here is the complete code that includes the tailored index:
import pandas as pd data = {'A': [11, 22, 33], 'B': [44, 55, 66], 'C': [77, 88, 99] } df = pd.DataFrame(data, index=['X', 'Y', 'Z']) print(df)
You’ll now see the new index on the left side of the DataFrame:
A B C
X 11 44 77
Y 22 55 88
Z 33 66 99
Now add df = df.transpose() in order to transpose the DataFrame:
import pandas as pd data = {'A': [11, 22, 33], 'B': [44, 55, 66], 'C': [77, 88, 99] } df = pd.DataFrame(data, index=['X', 'Y', 'Z']) df = df.transpose() print(df)
You’ll then get the transposed DataFrame, where the column names represent the tailored values:
X Y Z
A 11 22 33
B 44 55 66
C 77 88 99
Case 3: Import a CSV File and then Transpose the Results
At times, you may need to import a CSV file into Python, and then transpose the results.
For example, let’s say that you have the following data saved in a CSV file:
A | B | C |
11 | 44 | 77 |
22 | 55 | 88 |
33 | 66 | 99 |
You can then use the code below to import the data into Python (note that you’ll need to modify the path to reflect the location where the CSV file is stored on your computer):
import pandas as pd df = pd.read_csv(r'C:\Users\Ron\Desktop\my_data.csv') print(df)
You’ll now see the imported data:
A B C
0 11 44 77
1 22 55 88
2 33 66 99
Next, add df = df.transpose() to transpose the data imported (as before, you’ll need to modify the path name):
import pandas as pd df = pd.read_csv(r'C:\Users\Ron\Desktop\my_data.csv') df = df.transpose() print(df)
As you can see, the column names are again numeric, starting from 0 and ending at 2 (representing the original default numeric index):
0 1 2
A 11 22 33
B 44 55 66
C 77 88 99
Optionally, you can rename the index values before transposing the DataFrame:
df = df.rename(index={0: 'X', 1: 'Y', 2: 'Z'})
Here is the complete Python code to rename the index values and then transpose the DataFrame:
import pandas as pd df = pd.read_csv(r'C:\Users\Ron\Desktop\my_data.csv') df = df.rename(index={0: 'X', 1: 'Y', 2: 'Z'}) df = df.transpose() print(df)
And here is the new transposed DataFrame with the renamed column names:
X Y Z
A 11 22 33
B 44 55 66
C 77 88 99
You’ll get the same results by applying this code:
import pandas as pd df = pd.read_csv(r'C:\Users\Ron\Desktop\my_data.csv') df = df.rename(index={0: 'X', 1: 'Y', 2: 'Z'}).transpose() print(df)
And here are the same results:
X Y Z
A 11 22 33
B 44 55 66
C 77 88 99
You can learn more about df.transpose() by checking the Pandas Documentation.