2017-11-14 8 views
0

私はリストアイテムを含むデータフレームを1つのセルに持っています。pandasデータフレームでリストを選択するには

例えば、データフレーム 'ホーム'

a  b     c 
'book' ['living room'] ['cat','foo'] 
'shoes' ['door']   ['man','woman'] 
'cook' []    ['knife'] 

質問は、私はBに基づく 'コック' を選択しない方法です== [](空のリスト)。 []機能:

home.loc[home.b==[]] 

よう

はところで、私はラムダXを使用してリストを作成しました。

答えて

2

これを試してみてください:

home.loc[home['b'].str.len()==0] 

UPDATE:

In [313]: d 
Out[313]: 
     a    b    c 
0 book [living room] [cat, foo] 
1 shoes   [door] [man, woman] 
2 cook    []  [knife] 

In [314]: lst = ['cat','foo'] 

In [315]: d.loc[d['c'].astype(str) == str(lst)] 
Out[315]: 
     a    b   c 
0 book [living room] [cat, foo] 
+0

はありがとう、私は、私は長さによって特定の行ではなく、チェックを選択することができます意味します。それは少しばかげている。 –

+0

@ Zhonghao.KevinXie、私は小さなデモを追加しました - それはあなたが望むものですか? – MaxU

+0

それは動作します。リストに2つの項目がある場合は、効率的に選択する方法があります。私の実際のデータはリスト内に複数の項目を持っているので。 –

1

IIUC、@MaxU方法が最適ですが、私は思います。

しかし、あなたはこれを試すことができます。

home.loc[home.b.apply(lambda x: x == [])] 

出力:

 a b  c 
2 cook [] [knife] 
+1

ありがとうございます。参考になりましたが、@MaxUが最初に答えたので、私は彼にチェックしました。 –

関連する問題