Last modified: Mar 05, 2025 By Alexander Williams

Fix Python NameError: Name 'df' Not Defined

Encountering a NameError in Python can be frustrating, especially when the error message says 'df' is not defined. This error is common among beginners and even experienced developers. In this article, we'll explore the causes, solutions, and best practices to avoid this error.

What is a NameError in Python?

A NameError occurs when Python cannot find a name in the current scope. This usually happens when you try to use a variable or function that hasn't been defined yet. For example, if you try to use df without defining it first, Python will raise a NameError.

Common Causes of NameError: Name 'df' Not Defined

There are several reasons why you might encounter this error. Let's look at the most common ones:

1. Variable Not Defined

If you try to use df before defining it, Python will raise a NameError. For example:


print(df)  # This will raise a NameError

In this case, df is not defined anywhere in the code, so Python doesn't know what it refers to.

2. Typo in Variable Name

Another common cause is a typo in the variable name. For example:


df = pd.DataFrame()
print(dff)  # Typo: 'dff' instead of 'df'

Here, dff is not defined, so Python raises a NameError.

3. Scope Issues

Variables defined inside a function or loop are not accessible outside of it. For example:


def my_function():
    df = pd.DataFrame()

print(df)  # This will raise a NameError

In this case, df is defined inside my_function, so it's not accessible outside of it.

How to Fix NameError: Name 'df' Not Defined

Now that we know the common causes, let's look at how to fix this error.

1. Define the Variable Before Use

Make sure to define df before using it. For example:


import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3]})
print(df)

This code defines df before using it, so it won't raise a NameError.

2. Check for Typos

Always double-check your variable names for typos. For example:


df = pd.DataFrame({'A': [1, 2, 3]})
print(df)  # Correct variable name

This ensures that you're using the correct variable name.

3. Understand Variable Scope

If you define a variable inside a function or loop, make sure to use it within the same scope. For example:


def my_function():
    df = pd.DataFrame({'A': [1, 2, 3]})
    print(df)  # This will work

my_function()

Alternatively, you can return the variable from the function and use it outside:


def my_function():
    return pd.DataFrame({'A': [1, 2, 3]})

df = my_function()
print(df)  # This will work

Best Practices to Avoid NameError

Here are some best practices to avoid encountering NameError in your Python code:

1. Initialize Variables

Always initialize your variables before using them. This ensures that they exist in the current scope.

2. Use Descriptive Variable Names

Using descriptive variable names can help you avoid typos and make your code more readable.

3. Understand Python Scope Rules

Understanding how Python handles variable scope can help you avoid common pitfalls. For more on this, check out our article on Fix Python NameError in Functions and Scope.

Conclusion

The NameError: Name 'df' Not Defined is a common error in Python, but it's easy to fix once you understand the causes. By defining variables before use, checking for typos, and understanding variable scope, you can avoid this error in your code. For more tips on debugging Python errors, check out our articles on Fix Python NameError: Name 'logger' Not Defined and Fix Python NameError: Name 'config' Not Defined.