In this article, we will discuss how to convert a dataframe into a list of lists, by converting either each row or column into a list and create a python list of lists from them.
First of all, create a dataframe,
import pandas as pd # List of Tuples students = [('jack', 34, 'Sydney', 155), ('Riti', 31, 'Delhi', 177.5), ('Aadi', 16, 'Mumbai', 81), ('Mohit', 31, 'Delhi', 167), ('Veena', 12, 'Delhi', 144), ('Shaunak', 35, 'Mumbai', 135), ('Shaun', 35, 'Colombo', 111) ] # Create a DataFrame object studentDfObj = pd.DataFrame(students, columns=['Name', 'Age', 'City', 'Score']) print(studentDfObj)
Contents of the dataframe object studentDfObj are,
Name Age City Score 0 jack 34 Sydney 155.0 1 Riti 31 Delhi 177.5 2 Aadi 16 Mumbai 81.0 3 Mohit 31 Delhi 167.0 4 Veena 12 Delhi 144.0 5 Shaunak 35 Mumbai 135.0 6 Shaun 35 Colombo 111.0
Convert a Dataframe into a list of lists – Rows Wise
In the above-created dataframe, we have to fetch each row as a list and create a list of these lists. Let’s do all that in a single line,
Frequently Asked:
# Convert a dataframe to the list of rows i.e. list of lists listOfDFRows = studentDfObj.to_numpy().tolist() print(listOfDFRows) print(type(listOfDFRows))
Output:
[['jack', 34, 'Sydney', 155.0], ['Riti', 31, 'Delhi', 177.5], ['Aadi', 16, 'Mumbai', 81.0], ['Mohit', 31, 'Delhi', 167.0], ['Veena', 12, 'Delhi', 144.0], ['Shaunak', 35, 'Mumbai', 135.0], ['Shaun', 35, 'Colombo', 111.0]] <class 'list'>
It converted the dataframe into a list of lists row-wise, i.e., each nested list contains a row of the dataframe. But what happened in a single line?
How did it work?
Let’s break the above single line into multiple lines to understand the concept behind it.
Step 1: Convert the Dataframe to a nested Numpy array using DataFrame.to_numpy() i.e.,
Latest Python - Video Tutorial
# get rows of a dataframe as a nested numpy array numpy_2d_array = studentDfObj.to_numpy() print(numpy_2d_array) print(type(numpy_2d_array))
Output:
[['jack' 34 'Sydney' 155.0] ['Riti' 31 'Delhi' 177.5] ['Aadi' 16 'Mumbai' 81.0] ['Mohit' 31 'Delhi' 167.0] ['Veena' 12 'Delhi' 144.0] ['Shaunak' 35 'Mumbai' 135.0] ['Shaun' 35 'Colombo' 111.0]] <class 'numpy.ndarray'>
DataFrame.to_numpy()Â converts a dataframe to a Numpy array. Therefore we got a 2D Numpy array here. We confirmed that by printing the type of the returned object.
Step 2: Convert 2D Numpy array into a list of lists
Numpy provides a function tolist(), which converts a Numpy Array into a list. Let’s call that function to the above created 2D Numpy array object,
# Convert 2D numpy array to the list of lists listOfDFRows = numpy_2d_array.tolist() print(listOfDFRows) print(type(listOfDFRows))
Output:
[['jack', 34, 'Sydney', 155.0], ['Riti', 31, 'Delhi', 177.5], ['Aadi', 16, 'Mumbai', 81.0], ['Mohit', 31, 'Delhi', 167.0], ['Veena', 12, 'Delhi', 144.0], ['Shaunak', 35, 'Mumbai', 135.0], ['Shaun', 35, 'Colombo', 111.0]] <class 'list'>
It turned the 2D Numpy Array into a list of lists.
So, this is how we transformed a dataframe into a 2D Numpy Array and then into a List of Lists, where each nested list represents a row of the dataframe.
Convert a Dataframe into a list of lists – Column Wise
Contents of the dataframe studentDfObj are,
Name Age City Score 0 jack 34 Sydney 155.0 1 Riti 31 Delhi 177.5 2 Aadi 16 Mumbai 81.0 3 Mohit 31 Delhi 167.0 4 Veena 12 Delhi 144.0 5 Shaunak 35 Mumbai 135.0 6 Shaun 35 Colombo 111.0
Now to convert each column into a list and create a list of these lists,
# Convert a dataframe to the list of columns i.e. list of lists listOfDFRows = studentDfObj.transpose().values.tolist() print(listOfDFRows) print(type(listOfDFRows))
Output:
[['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'], [34, 31, 16, 31, 12, 35, 35], ['Sydney', 'Delhi', 'Mumbai', 'Delhi', 'Delhi', 'Mu mbai', 'Colombo'], [155.0, 177.5, 81.0, 167.0, 144.0, 135.0, 111.0]] <class 'list'>
How did it work?
It worked on the same concept we discussed above, just one additional step here i.e.
Step 1: Transpose the dataframe to convert rows as columns and columns as rows
# Transpose the dataframe, rows are now columns and columns are now rows transposedDfObj = studentDfObj.transpose() print(transposedDfObj)
Output
0 1 2 3 4 5 6 Name jack Riti Aadi Mohit Veena Shaunak Shaun Age 34 31 16 31 12 35 35 City Sydney Delhi Mumbai Delhi Delhi Mumbai Colombo Score 155 177.5 81 167 144 135 111
tansposedDFObj is a a transpose of the original dataframe i.e. rows in studentDfObj are columns in tansposedDFObj and columns in studentDfObj are rows in tansposedDFObj.
Step 2: Convert the Dataframe to a nested Numpy array using DataFrame.to_numpy()
# get rows of a dataframe as a nested numpy array numpy_2d_array = transposedDfObj.to_numpy() print(numpy_2d_array) print(type(numpy_2d_array))
Output
[['jack' 'Riti' 'Aadi' 'Mohit' 'Veena' 'Shaunak' 'Shaun'] [34 31 16 31 12 35 35] ['Sydney' 'Delhi' 'Mumbai' 'Delhi' 'Delhi' 'Mumbai' 'Colombo'] [155.0 177.5 81.0 167.0 144.0 135.0 111.0]] <class 'numpy.ndarray'>
Step 3: Convert 2D Numpy array into a list of lists.
# Convert 2D numpy array to the list of lists listOfDFRows = numpy_2d_array.tolist() print(listOfDFRows) print(type(listOfDFRows))
Output
[['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'], [34, 31, 16, 31, 12, 35, 35], ['Sydney', 'Delhi', 'Mumbai', 'Delhi', 'Delhi', 'Mu mbai', 'Colombo'], [155.0, 177.5, 81.0, 167.0, 144.0, 135.0, 111.0]] <class 'list'>
It converted the 2D Numpy Array into a list of lists. So, this is how we transformed a dataframe into a 2D Numpy Array and then into a List of Lists, where each nested list represents a column of the dataframe.
The Complete example is as follows,
import pandas as pd def main(): # List of Tuples students = [('jack', 34, 'Sydney', 155), ('Riti', 31, 'Delhi', 177.5), ('Aadi', 16, 'Mumbai', 81), ('Mohit', 31, 'Delhi', 167), ('Veena', 12, 'Delhi', 144), ('Shaunak', 35, 'Mumbai', 135), ('Shaun', 35, 'Colombo', 111) ] # Create a DataFrame object studentDfObj = pd.DataFrame(students, columns=['Name', 'Age', 'City', 'Score']) print("Contents of the Dataframe : ") print(studentDfObj) print('Convert a Dataframe into list of lists - Rows Wise') # Convert a dataframe to the list of rows i.e. list of lists listOfDFRows = studentDfObj.to_numpy().tolist() print(listOfDFRows) print(type(listOfDFRows)) print('How did it worked ?') # get rows of a dataframe as a nested numpy array numpy_2d_array = studentDfObj.to_numpy() print(numpy_2d_array) print(type(numpy_2d_array)) # Convert 2D numpy array to the list of lists listOfDFRows = numpy_2d_array.tolist() print(listOfDFRows) print(type(listOfDFRows)) print('Convert Dataframe into lists of lists - Column Wise') # Convert a dataframe to the list of columns i.e. list of lists listOfDFRows = studentDfObj.transpose().values.tolist() print(listOfDFRows) print(type(listOfDFRows)) print('How did it worked ?') # Transpose the dataframe, rows are now columns and columns are now rows transposedDfObj = studentDfObj.transpose() print(transposedDfObj) # get rows of a dataframe as a nested numpy array numpy_2d_array = transposedDfObj.to_numpy() print(numpy_2d_array) print(type(numpy_2d_array)) # Convert 2D numpy array to the list of lists listOfDFRows = numpy_2d_array.tolist() print(listOfDFRows) print(type(listOfDFRows)) if __name__ == '__main__': main()
Output:
Contents of the Dataframe : Name Age City Score 0 jack 34 Sydney 155.0 1 Riti 31 Delhi 177.5 2 Aadi 16 Mumbai 81.0 3 Mohit 31 Delhi 167.0 4 Veena 12 Delhi 144.0 5 Shaunak 35 Mumbai 135.0 6 Shaun 35 Colombo 111.0 Convert a Dataframe into list of lists - Rows Wise [['jack', 34, 'Sydney', 155.0], ['Riti', 31, 'Delhi', 177.5], ['Aadi', 16, 'Mumbai', 81.0], ['Mohit', 31, 'Delhi', 167.0], ['Veena', 12, 'Delhi', 144.0], ['Shaunak', 35, 'Mumbai', 135.0], ['Shaun', 35, 'Colombo', 111.0]] <class 'list'> How did it worked ? [['jack' 34 'Sydney' 155.0] ['Riti' 31 'Delhi' 177.5] ['Aadi' 16 'Mumbai' 81.0] ['Mohit' 31 'Delhi' 167.0] ['Veena' 12 'Delhi' 144.0] ['Shaunak' 35 'Mumbai' 135.0] ['Shaun' 35 'Colombo' 111.0]] <class 'numpy.ndarray'> [['jack', 34, 'Sydney', 155.0], ['Riti', 31, 'Delhi', 177.5], ['Aadi', 16, 'Mumbai', 81.0], ['Mohit', 31, 'Delhi', 167.0], ['Veena', 12, 'Delhi', 144.0], ['Shaunak', 35, 'Mumbai', 135.0], ['Shaun', 35, 'Colombo', 111.0]] <class 'list'> Convert Dataframe into lists of lists - Column Wise [['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'], [34, 31, 16, 31, 12, 35, 35], ['Sydney', 'Delhi', 'Mumbai', 'Delhi', 'Delhi', 'Mu mbai', 'Colombo'], [155.0, 177.5, 81.0, 167.0, 144.0, 135.0, 111.0]] <class 'list'> How did it worked ? 0 1 2 3 4 5 6 Name jack Riti Aadi Mohit Veena Shaunak Shaun Age 34 31 16 31 12 35 35 City Sydney Delhi Mumbai Delhi Delhi Mumbai Colombo Score 155 177.5 81 167 144 135 111 [['jack' 'Riti' 'Aadi' 'Mohit' 'Veena' 'Shaunak' 'Shaun'] [34 31 16 31 12 35 35] ['Sydney' 'Delhi' 'Mumbai' 'Delhi' 'Delhi' 'Mumbai' 'Colombo'] [155.0 177.5 81.0 167.0 144.0 135.0 111.0]] <class 'numpy.ndarray'> [['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'], [34, 31, 16, 31, 12, 35, 35], ['Sydney', 'Delhi', 'Mumbai', 'Delhi', 'Delhi', 'Mu mbai', 'Colombo'], [155.0, 177.5, 81.0, 167.0, 144.0, 135.0, 111.0]] <class 'list'>
Latest Video Tutorials