2016-11-13 12 views
1

私はこのようになりますパンダDATAFRAME dfがあります、私は唯一の'a'Bにリストに属するそれらの行を選択することでdfをサブセットしたい今列値がリストであるpandas DataFrameをサブセット化する方法はありますか?

A  B 
0 ['a','b'] 
1 ['c','d'] 
2 ['a','c'] 
3 ['b','d'] 
4 ['a','d'] 

を、所望の出力ビーイング:

A  B 
0 ['a','b'] 
2 ['a','c'] 
4 ['a','d'] 

Naakes、私はdf['a' in df['B']]を試しましたが、これはうまくいかないようです。これをどうやってやりますか?

答えて

2

applyを使用すると、フィルタリングする方法の1つです。オブジェクトDTYPEの配列を作成します

df[(df.B.values=='a').any(1)] 

df.B.values場合、我々は平坦化操作を使用する必要があります - リストの長さは、ここでベクトル化されたアプローチだ、すべての行で同一であると仮定すると

In [39]: df[df['B'].apply(lambda x: 'a' in x)] 
Out[39]: 
    A  B 
0 0 [a, b] 
2 2 [a, c] 
4 4 [a, d] 
2

そこにはnp.concatenateと同じように -

df[(np.concatenate(df.B)=='a').reshape(len(df),-1).any(1)]