如何解决‘NameError: name 'df' is not defined’报错问题
解决NameError: name 'df' is not defined的问题
错误原因
代码中直接使用了df这个Pandas DataFrame对象,但未提前定义或加载该对象,Python无法识别这个未声明的变量,因此抛出NameError。
解决方案
你需要先创建或加载包含url列的DataFrame,再执行后续的列计算操作,以下是两种常见场景的实现:
1. 从文件加载现有URL数据
如果你的URL数据存储在CSV、Excel等文件中,使用Pandas的读取方法加载数据:
#Importing dependencies from urllib.parse import urlparse from tld import get_tld import os.path import pandas as pd #First Directory Length def fd_length(url): urlpath= urlparse(url).path try: return len(urlpath.split('/')[1]) except: return 0 # 新增:从CSV文件加载数据到df(替换为你的实际文件路径) df = pd.read_csv('url_dataset.csv') # 如果是Excel文件,用pd.read_excel('url_dataset.xlsx') # 执行列计算 df['fd_length'] = df['url'].apply(lambda i: fd_length(i))
2. 手动创建测试用DataFrame
如果只是测试fd_length函数的功能,可以手动构造包含url列的示例数据:
#Importing dependencies from urllib.parse import urlparse from tld import get_tld import os.path import pandas as pd #First Directory Length def fd_length(url): urlpath= urlparse(url).path try: return len(urlpath.split('/')[1]) except: return 0 # 新增:手动创建测试用DataFrame df = pd.DataFrame({ 'url': [ 'https://example.com/blog/article', 'https://test.com/', 'http://demo.org/docs/api' ] }) # 执行列计算 df['fd_length'] = df['url'].apply(lambda i: fd_length(i))
注意事项
- 确保加载或创建的DataFrame中存在名为
url的列,否则后续会抛出KeyError - 如果数据来自数据库、API等其他数据源,使用对应的Pandas读取方法(如
pd.read_sql()、pd.json_normalize()等)完成数据加载
内容的提问来源于stack exchange,提问作者Md.Mahbub Murshid
相关产品推荐
相关产品推荐

