2016-10-19 16 views

ответ

1

Это терпит неудачу, потому что 2:4 недействителен синтаксис для доступа к ключам/Столбцы ДФ:

In [73]: 
df[[2:4]] 
    File "<ipython-input-73-f0f09617b349>", line 1 
    df[[2:4]] 
     ^
SyntaxError: invalid syntax 

Это ничем не отличается, если вы определен dict и попробовал тот же синтаксис:

In [74]: 
d = {0:0,1:1,2:2,3:3,4:4,5:5} 
d 

Out[74]: 
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5} 

In [76]: 
d[[2:4]] 

    File "<ipython-input-76-ea5d68adc389>", line 1 
    d[[2:4]] 
     ^
SyntaxError: invalid syntax 

[] синтаксис используется для доступа к ярлыкам столбцов, которые соответствуют, вы не можете передавать фрагмент в списке для доступа к диапазону столбцов, как это, он должен быть списком значений, как вы уже нашли.

Новее методы, такие как iloc, ix и loc ломтика поддержка диапазонов

то, что работало для вас, изначально выбраны столбцы, используя метки в списке:

In [77]: 
df[[2,3,4]] 

Out[77]: 
    2 3 4 
0 3 4 5 
1 3 4 5 
2 3 4 5 
3 3 4 5 
4 3 4 5 

а затем выбирается строки с помощью кусочка:

In [79]: 
df[[2,3,4]][2:4] 

Out[79]: 
    2 3 4 
2 3 4 5 
3 3 4 5 
1

Я думаю, что вам нужно ix:

print (df.ix[2:4,2:4]) 
    2 3 
2 3 4 
3 3 4 
4 3 4 
+0

классный, спасибо за это jezrael –

+0

Извините, мой коалиг приходит ко мне. Теперь я вижу второй ответ, я думаю, что это очень хорошее объяснение. Я считаю, что лучше всего использовать такие функции, как ['ix'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.ix.html), [' iloc'] (http : //pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.iloc.html) или ['loc'] (http://pandas.pydata.org/pandas-docs/stable/generated/ pandas.DataFrame.loc.html). – jezrael

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