Pandas: Converting a DataFrame to a list of tuples (3 examples)

Updated: February 19, 2024 By: Guest Contributor Post a comment

Introduction

Pandas is a versatile tool in the Python data science toolkit that allows for efficient manipulation and analysis of data. A common operation while working with Pandas DataFrames is converting them into a list of tuples. This conversion can greatly simplify passing DataFrame data into functions that require tuples, data serialization, or even for database operations. In this tutorial, we will explore various methods to convert a Pandas DataFrame to a list of tuples, with code examples that increase in complexity from basic to advanced.

Basic Conversion

The simplest way to convert a DataFrame into a list of tuples is to use the .itertuples() method. This method iterates over the DataFrame rows as named tuples. Here’s a basic example:

import pandas as pd

df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Paris', 'London']
})

list_of_tuples = list(df.itertuples(index=False, name=None))
print(list_of_tuples)

The output will be:

[("Alice", 25, "New York"), ("Bob", 30, "Paris"), ("Charlie", 35, "London")]

Using .to_numpy() for Conversion

An alternative method to convert a DataFrame to a list of tuples involves using the .to_numpy() function and then converting the numpy array to a list of tuples. Here’s how you can do it:

df_numpy = df.to_numpy()
list_of_tuples_via_numpy = [tuple(row) for row in df_numpy]
print(list_of_tuples_via_numpy)

The output remains similar:

[("Alice", 25, "New York"), ("Bob", 30, "Paris"), ("Charlie", 35, "London")]

Customized Tuple Conversion

Sometimes, you may need to customize how the tuples are created, especially when dealing with large DataFrames or when specific data manipulation is required before the conversion. This can be achieved by applying functions to DataFrame rows. Here’s an advanced example:

def custom_tuple(row):
    return (row['Name'].upper(), row['Age'], row['City'].capitalize())

list_of_custom_tuples = [custom_tuple(row) for _, row in df.iterrows()]
print(list_of_custom_tuples)

The output will demonstrate the custom transformation:

[("ALICE", 25, "New york"), ("BOB", 30, "Paris"), ("CHARLIE", 35, "London")]

Conclusion

Converting Pandas DataFrames to a list of tuples is a fundamental operation that can be achieved through various methods, depending on your specific requirements. We explored three main approaches: leveraging .itertuples() for straightforward conversion, utilizing .to_numpy() for a more numpy-centric method, and customizing tuple creation with functions for more complex scenarios. Knowing how to seamlessly transition between these forms can greatly enhance your data manipulation capabilities in Python.