が思うPythonでないdatarameなぜDF [[2,3,4]] [2:4]に機能し、DF [2:4] [2:4]私たちが持っていない
import pandas as pd
df = pd.read_csv('...')
df
0 1 2 3 4
0 1 2 3 4 5
1 1 2 3 4 5
2 1 2 3 4 5
3 1 2 3 4 5
4 1 2 3 4 5
なぜ1つのアプローチが機能していて、他の構文エラーを返すのですか?
が思うPythonでないdatarameなぜDF [[2,3,4]] [2:4]に機能し、DF [2:4] [2:4]私たちが持っていない
import pandas as pd
df = pd.read_csv('...')
df
0 1 2 3 4
0 1 2 3 4 5
1 1 2 3 4 5
2 1 2 3 4 5
3 1 2 3 4 5
4 1 2 3 4 5
なぜ1つのアプローチが機能していて、他の構文エラーを返すのですか?
2:4
はDFのキー/列にアクセスするための無効な構文であるため、それは失敗します。
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
[]
構文は、一致する列ラベルにアクセスするために使用されます。このような列の範囲にアクセスするためにリスト内のスライスを渡すことはできません。すでに見つかった値のリストである必要があります。
新しい
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
そしてスライスを経由して行を選択:
最初にリストにラベルを使用して列を選択し、あなたのために働い何なiloc
、ix
とloc
支援スライスなどのメソッドを範囲
In [79]:
df[[2,3,4]][2:4]
Out[79]:
2 3 4
2 3 4 5
3 3 4 5
私はあなたがix
が必要だと思う:
print (df.ix[2:4,2:4])
2 3
2 3 4
3 3 4
4 3 4
クール、その喜んでjezrael –
申し訳ありませんが、私の同僚は私に来る。今私は二番目の答えを見る、私はそれが非常にいい説明だと思う。私は最高のものは['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