Pandas 数据帧索引访问超出范围时不引发异常?

Pandas 数据帧索引访问超出范围时不引发异常?,pandas,Pandas,以下MWE脚本如何工作?实际上,我希望作业(就在打印之前)失败。相反,它不会改变任何东西,也不会引发任何异常。这是最奇怪的行为之一 import pandas as pd import numpy as np l = ['a', 'b'] d = np.array([[False]*len(l)]*3) df = pd.DataFrame(columns=l, data=d, index=range(1,4)) df["a"][4] = True print df 当您说df[“a”][4]=

以下MWE脚本如何工作?实际上,我希望作业(就在打印之前)失败。相反,它不会改变任何东西,也不会引发任何异常。这是最奇怪的行为之一

import pandas as pd
import numpy as np
l = ['a', 'b']
d = np.array([[False]*len(l)]*3)
df = pd.DataFrame(columns=l, data=d, index=range(1,4))
df["a"][4] = True
print df
当您说
df[“a”][4]=True
时,您正在修改
a
系列对象,并且您并没有真正修改
df
数据帧,因为
df
的索引没有4项。我写了一段代码来展示这种行为:

在[90]中:

import pandas as pd
import numpy as np
l = ['a', 'b']
d = np.array([[False]*len(l)]*3)
df = pd.DataFrame(columns=l, data=d, index=range(1,4))
df['a'][4] = True

print "DataFrame:"
print df

DataFrame:
       a      b
1  False  False
2  False  False
3  False  False
在[91]中:

df['b'][4]=False
print "DataFrame:"
print df

DataFrame:
       a      b
1  False  False
2  False  False
3  False  False
在[92]中:

print "DF's Index"
print df.index

DF's Index
Int64Index([1, 2, 3], dtype='int64')
在[93]中:

print "Series object a:" 
print df['a']

Series object a:
1    False
2    False
3    False
4     True
Name: a, dtype: bool
在[94]中:

print "Series object b:" 
print df['b']

Series object b:
1    False
2    False
3    False
4    False
Name: b, dtype: bool

谢谢你的回复。简言之,它的基础是一个dict.Hmmm。有没有办法通过密钥检查来完成赋值?如果输入df.index,则这不是
。我更喜欢引起异常的东西。