2015-09-21 67 views
1

以下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 

回答

1

當你說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 
+0

感謝您的答覆。簡而言之,它是一個字典。嗯。有沒有辦法通過密鑰檢查進行分配?這不是'if key in df.index'。寧願提出異常的東西。 –