In this article, we will discuss different ways to convert a dataframe column into a list.
Fits of all, create a dataframe object that we are going to use in this example,
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 student_df = pd.DataFrame(students, columns=['Name', 'Age', 'City', 'Score']) print(student_df)
Output:
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 how to fetch a single column out of this dataframe and convert it to a python list?
There are different ways to do that, lets discuss them one by one.
Convert a Dataframe column into a list using Series.to_list()
To turn the column ‘Name’ from the dataframe object student_df to a list in a single line,
Frequently Asked:
# select a column as series and then convert it into a column list_of_names = student_df['Name'].to_list() print('List of Names: ', list_of_names) print('Type of listOfNames: ', type(list_of_names))
Output
List of Names: ['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'] Type of listOfNames: <class 'list'>
What did happen here?
How did it work?
Let’s break down the above line into steps,
Step 1: Fetch a column as series
Select the column ‘Name’ from the dataframe using [] operator,
# Select column 'Name' as series object names = student_df['Name'] print(names) print(type(names))
Output:
0 jack 1 Riti 2 Aadi 3 Mohit 4 Veena 5 Shaunak 6 Shaun Name: Name, dtype: object <class 'pandas.core.series.Series'>
It returns a Series object names, and we have confirmed that by printing its type.
Step 2 : Convert the Series object to the list
Series class provides a function Series.to_list(), which returns the contents of Series object as list. Use that to convert series names into a list i.e.
# Convert series object to a list list_of_names = names.to_list() print('List of Names: ', list_of_names) print('Type of listOfNames: ', type(list_of_names))
Output:
List of Names: ['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'] Type of listOfNames: <class 'list'>
This is how we converted a dataframe column into a list.
Important Note:
It might be possible that it gives you an error i.e.
AttributeError: 'Series' object has no attribute 'to_list'
If you get that error, then please check your Pandas version, you may be using pandas version less than 24.
Import pandas as pd print(pd.__version__)
Upgrade you pandas to the latest version using the following command,
pip install --upgrade pandas
Convert a Dataframe column into a list using numpy.ndarray.tolist()
Another way is converting a Dataframe column into a list is,
# Convert column Name to a Numpy Array and then to a list list_of_names = student_df['Name'].values.tolist() print('List of Names: ', list_of_names) print('Type of listOfNames: ', type(list_of_names))
Output
List of Names: ['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'] Type of listOfNames: <class 'list'>
We converted the column ‘Name’ into a list in a single line. Let’s see what happened inside it,
How did it work?
Let’s break down the above line into steps,
Step 1: Select a column as a Series object
Select the column ‘Name’ from the dataframe using [] operator,
student_df['Name']
It returns a Series object.
Step 2: Get a Numpy array from a series object using Series.Values
# Select a column from dataframe as series and get a numpy array from that names = student_df['Name'].values print('Numpy array: ', names) print('Type of namesAsNumpy: ', type(names))
Output:
Numpy array: ['jack' 'Riti' 'Aadi' 'Mohit' 'Veena' 'Shaunak' 'Shaun'] Type of namesAsNumpy: <class 'numpy.ndarray'>
Names is a numpy array, and we confirmed it by printing its types.
Step 3: Convert a Numpy array into a list
Numpy array provides a function tolist() to convert its contents to a list,
# Convert numpy array to a list list_of_names = names.tolist() print('List of Names: ', list_of_names) print('Type of listOfNames: ', type(list_of_names))
Output:
List of Names: ['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'] Type of listOfNames: <class 'list'>
This is how we selected our column ‘Name’ from Dataframe as a Numpy array and then turned it to a list.
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 student_df = pd.DataFrame(students, columns=['Name', 'Age', 'City', 'Score']) print("Contents of the Dataframe : ") print(student_df) print('Convert a Dataframe column into a list using Series.to_list()') # select a column as series and then convert it into a column list_of_names = student_df['Name'].to_list() print('List of Names: ', list_of_names) print('Type of listOfNames: ', type(list_of_names)) print('How did it worked ?') # Select column 'Name' as series object names = student_df['Name'] print(names) print(type(names)) # Convert series object to a list list_of_names = names.to_list() print('List of Names: ', list_of_names) print('Type of listOfNames: ', type(list_of_names)) print("Convert a Dataframe column into a list using numpy.ndarray.tolist()") # Convert column Name to a Numpy Array and then to a list list_of_names = student_df['Name'].values.tolist() print('List of Names: ', list_of_names) print('Type of listOfNames: ', type(list_of_names)) print('How did it worked ?') # Select a column from dataframe as series and get a numpy array from that names = student_df['Name'].values print('Numpy array: ', names) print('Type of namesAsNumpy: ', type(names)) # Convert numpy array to a list list_of_names = names.tolist() print('List of Names: ', list_of_names) print('Type of listOfNames: ', type(list_of_names)) 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 column into a list using Series.to_list() List of Names: ['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'] Type of listOfNames: <class 'list'> How did it worked ? 0 jack 1 Riti 2 Aadi 3 Mohit 4 Veena 5 Shaunak 6 Shaun Name: Name, dtype: object <class 'pandas.core.series.Series'> List of Names: ['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'] Type of listOfNames: <class 'list'> Convert a Dataframe column into a list using numpy.ndarray.tolist() List of Names: ['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'] Type of listOfNames: <class 'list'> How did it worked ? Numpy array: ['jack' 'Riti' 'Aadi' 'Mohit' 'Veena' 'Shaunak' 'Shaun'] Type of namesAsNumpy: <class 'numpy.ndarray'> List of Names: ['jack', 'Riti', 'Aadi', 'Mohit', 'Veena', 'Shaunak', 'Shaun'] Type of listOfNames: <class 'list'>