2015-04-09 2 views
1

Найти немного странно, что нарезка с номером -ve и списком, сделанным из этого среза, не совпадают. Почему это так?странное поведение в разрезе Pandas

dfl = DataFrame(np.random.randn(5,2),columns=list('AB')) 

>>> dfl 
      A   B 
0 -0.775699 -0.622863 
1 2.418822 0.747961 
2 1.000536 0.036125 
3 0.394238 -0.215857 
4 0.374322 0.795460 

>>> dfl.iloc[:,-1:] 
      B 
0 -0.622863 
1 0.747961 
2 0.036125 
3 -0.215857 
4 0.795460 

>>> list(dfl.iloc[:,-1:]) 
['B'] 


>>> list(dfl.iloc[:,1]) 
[-0.622863, 0.747961, 0.036125, -0.215857, 0.795460] 

ответ

1

Причина в том, что ваш первый нарезка возвращает DataFrame в то время как последние возвращается в серии:

In [183]: 

type(dfl.iloc[:,-1:]) 
Out[183]: 
pandas.core.frame.DataFrame 

In [184]: 

type(dfl.iloc[:,1]) 
Out[184]: 
pandas.core.series.Series 

Вызов списка на ФР возвращает столбцы

In [189]: 

list(dfl) 
Out[189]: 
['A', 'B'] 
+0

забывали это основное, когда несутся до кривой обучения Python! – dyingoptimist

Смежные вопросы