在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
答案 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