Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pandas中的列名中使用保留字_Python_Pandas - Fatal编程技术网

Python 在pandas中的列名中使用保留字

Python 在pandas中的列名中使用保留字,python,pandas,Python,Pandas,在pandas中将保留名称用作列名不会提供错误或警告消息。代码只是运行,什么也不做。有没有办法打开某种警告以防止使用保留字作为列名 MWE: 输出: median A 1 0 0 2 0 12 3 0 0 在Python中,与其他语言不同,实际上没有变量的概念。Python具有指向对象的名称 由于Python不是严格类型化的(例如与java或C++不同),您可以灵活地为其他对象分配名称,甚至指向指向函数的名称(因为函数与其他对象一样,是一个对象)。

在pandas中将保留名称用作列名不会提供错误或警告消息。代码只是运行,什么也不做。有没有办法打开某种警告以防止使用保留字作为列名

MWE:

输出:

 median    A
1    0    0
2    0    12
3    0    0

在Python中,与其他语言不同,实际上没有变量的概念。Python具有指向对象的名称

由于Python不是严格类型化的(例如与java或C++不同),您可以灵活地为其他对象分配名称,甚至指向指向函数的名称(因为函数与其他对象一样,是一个对象)。 尽管这是非常灵活的(它允许通过覆盖函数名轻松地覆盖对象的功能),但它确实意味着,如果您尝试执行影响对象的操作,Python不会向您发出警告。这就是所谓的阴影

这只是拥有灵活类型系统的一个折衷方案,Python程序员需要注意这一点

下面是一个典型的例子:

>>> type(id)
<type 'builtin_function_or_method'>
>>> id(4)
10677280
>>> id = 5
>>> type(id)
<type 'int'>
>>> id(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>类型(id)
>>>id(4)
10677280
>>>id=5
>>>类型(id)
>>>id(5)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“int”对象不可调用

@BurhanKhalid:嗯,有一些,但一般来说你是对的-通过重复使用内置对象的名称射中自己的脚是完全合法的,这一原则似乎延伸到了熊猫身上……这就是为什么在我使用
熊猫时,我求助于使用括号符号来访问列,而不是点符号。虽然后者很方便,但有时你不仅会射中你的脚,甚至会截肢错误的腿。也许保留字不是正确的术语。我指的是为特殊目的保留的词语。在熊猫中,“中间”有一个特殊的含义。然而,我没有意识到这一点,并将一个数据列命名为“中间值”。如果发生冲突,可能会出现错误或警告消息。我只是想知道我将来如何捕捉这些错误。一个非常明确的方法是将所有这些术语存储到一个列表中,并对照所述列表检查每个列名。然而,对于每个涉及的库来说,这可能是一项稍微单调乏味的任务(我不认为您会仅停留在
pandas
)。“Basic”Python非常简单,因为您可以随时调用
内置方法,并在那里进行比较。那么
df.ix[1]
已经有一个名为“media”的成员了吗?没有标志afaik在每次重新绑定名称时发出警告。感谢您的回复。但是,根据您的示例,一旦我重命名了一列“median”,该列应该只覆盖内置的median方法/函数,并且我仍然应该得到我希望的正确输出?这将取决于Pandas如何映射您的列名。在您的示例中,您刚刚将中值属性(如果存在)覆盖为12。我想我现在明白了。感谢使用
df.itertuples()
迭代
df
时需要记住的一点是。列标题中的保留字(如
return
)将替换为位置名称(如
\u 4
>>> type(id)
<type 'builtin_function_or_method'>
>>> id(4)
10677280
>>> id = 5
>>> type(id)
<type 'int'>
>>> id(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable