首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python Pandas: NameError:未定义名称

Python Pandas: NameError:未定义名称
EN

Stack Overflow用户
提问于 2015-02-16 11:47:01
回答 4查看 50.3K关注 0票数 2

好了,这是我的第一个Python Pandas程序,我很难弄清楚列名是什么,这样我就可以在函数调用中引用它。

下面是我的代码。parseDeviceType正在调用一个函数来解析用户代理字符串。但是当我使用我认为的列名来调用它时,我得到了一个错误,没有定义名称:

代码语言:javascript
运行
复制
df = pd.read_csv('user_agent_strings.txt',index_col=None, na_values=['NA'],sep=',')
dt=parseDeviceType(user_agent_string)
print df.columns

NameError: name 'user_agent_string' is not defined
Index([u'user_agent_string'], dtype='object')

下面是输入文件的头和第一行数据,其中包含用户代理字符串:

代码语言:javascript
运行
复制
"user_agent_string"
"Mozilla/5.0 (iPad; CPU OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53"

您能帮助我理解如何在dt=parseDeviceType(user_agent_string)调用中引用列名吗?我还想知道如何通过列号引用它,如果在调用函数时可能的话。

谢谢

EN

回答 4

Stack Overflow用户

发布于 2018-06-06 14:59:39

导入pandas包读取数据

代码语言:javascript
运行
复制
import pandas as pd 

df = pd.read_csv('user_agent_strings', index_col=None, na_values=['NA'],sep=',')
票数 1
EN

Stack Overflow用户

发布于 2018-12-30 15:40:08

您需要了解的第一件事是看到的错误消息:

NameError是一个Python异常,在本例中与Pandas无关。您可以通过尝试使用解释器不知道的任何名称来获得完全相同的错误:

代码语言:javascript
运行
复制
>>> b = a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

重要的是要知道,很少有Python命令可以“魔术”地创建名称。要创建一个名称,您几乎总是需要一个赋值(name = ...)。所以一般来说,如果你没有这样做,name就不会存在。在您的代码中,您已经创建的名称是df,因此您将需要通过该名称来获取数据。

您可以使用两种不同的方法来访问数据帧中的数据,这两种方法是等效的:df['user_agent_string']df.user_agent_string。我建议在交互式环境中尝试此方法,以便您可以在将其传递给函数之前查看结果。

我还会猜测您的函数parseDeviceType只对一个字符串(基于注释)执行此操作,但您希望对文件中的每一项调用此函数。为此,您需要apply

代码语言:javascript
运行
复制
parsed_types = df.user_agent_string.apply(parseDeviceType)

要按编号而不是按名称访问列(我不推荐这样做),可以使用iloc。这允许您从dataframe对象访问所有行(:)和第一列(0):

代码语言:javascript
运行
复制
user_agent_string = df.iloc[:, 0]
票数 1
EN

Stack Overflow用户

发布于 2015-07-11 06:05:55

尝试从您的文件名中删除.txt可能会有所帮助。如下所示:

代码语言:javascript
运行
复制
df = pd.read_csv('user_agent_strings', index_col=None, na_values=['NA'],sep=',')
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28534249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档