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

时间:2015-07-08 06:53:22

标签: python pandas

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

MWE:

import pandas as pd

index_names = ['1','2','3']
col_names = ['median','A']

df = pd.DataFrame(index = index_names, columns = col_names)
df.fillna(0, inplace = True)
df.ix[1].A = 12
df.ix[1].median = 12
print df

输出:

 median    A
1    0    0
2    0    12
3    0    0

1 个答案:

答案 0 :(得分:1)

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

由于Python不是严格类型的(例如,与Java或C ++不同),您可以灵活地为其他对象分配名称,甚至是指向函数的名称(因为函数就像其他所有对象一样)。

尽管这非常灵活(它允许通过覆盖函数的名称来轻松覆盖对象的功能),但它确实意味着如果您尝试执行影响built-in name的操作,Python将不会发出警告。这称为 shadowing

这只是拥有灵活类型系统的权衡之一,也是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
相关问题