2017-11-14 28 views
1

別の列の値でフィルタリングされた列の特定のサブセットの列(インデックス範囲で定義)を取得したいとします。私のデータフレーム:Pandasの別の列と列のインデックスによる列のサブセット

ここ
A B C D 
0 11 b1 c1 d1 
1 33 b2 c2 d2 
2 22 b3 c3 d3 

私は、列基準によって行のすべての列を取得することができます。また

df[df['A'] == 33] 

、私は、インデックスにより、すべての行の特定の列を取得することができます:

df.iloc[:,0:2] 

今私はこのロジックに沿って2つを組み合わせたい(これはうまくいかない):

答えて

0

:-)それらを一緒に組み合わせることができます。

print (df.columns[0:2]) 
Index(['A', 'B'], dtype='object') 

df = df.loc[df['A'] == 33, df.columns[0:2]] 
print (df) 

    A B 
1 33 b2 

ので:

df = df.iloc[df['A'] == 33, 0:2] 

NotImplementedError: iLocation based boolean indexing on an integer type is not available

0

私たちは、あなたがDataFrame.locでインデックス化することで、列を選択することができます

df.loc[df['A'] == 33].iloc[:,0:2] 
Out[464]: 
    A B 
1 33 b2 

それとも

df.iloc[(df['A'] == 33).nonzero()[0],0:2] 
Out[471]: 
    A B 
1 33 b2 
関連する問題