2017-10-20 1 views
0

茶色(列 '色')の動物を見つけたいと思います。すべての行)、茶色でない動物については、すべての情報(すべての行)を削除します。samn列の各値のフィルタデータフレームは、Panda Pythonの別の列の特定の値を持っています

洞察?

df = pd.DataFrame([['dog','France','white'],['dog','Japon','brown'],['cat','France','white'],['cat','France','dark']],columns=['Animal','localisation','couleur']) 

output = pd.DataFrame([['dog','France','white'],['dog','Japon','brown']],columns=['Animal','localisation','couleur']) 
+0

は、あなたがこれまでにしようとしているものに手の込んだていただけますか?人々があなたのために問題を解決することを期待するのではなく、何らかの努力を示すならば、役に立つ反応を得るでしょう。 – polarise

答えて

0

使用filter

In [4934]: df.groupby('Animal').filter(lambda x: 'brown' in x['couleur'].values) 
Out[4934]: 
    Animal localisation couleur 
0 dog  France white 
1 dog  Japon brown 

それとも

In [4935]: df.groupby('Animal').filter(lambda x: x['couleur'].eq('brown').any()) 
Out[4935]: 
    Animal localisation couleur 
0 dog  France white 
1 dog  Japon brown 
0

はクルールフィールドが茶色であるレコードのみを取得するための条件df['couleur'] == 'brown]を適用した後、(削除する)、元のデータフレームを上書き:

df = df[df['couleur'] == 'brown'] 

またはあなただけの出力が必要な場合:

output = df[df['couleur'] == 'brown'] 
0

あなたは色に基づいてフィルタリングした後、残っている動物のリストを抽出して、PDを使用して、そのリストに動物のためのあなたの元のデータフレームをフィルタリングすることができます。 Series.isin方法:

animals = df[df['couleur'] == 'brown']['Animal'] 
output = df[df['Animal'].isin(animals)] 

または1行で:

output = df[df['Animal'].isin(df[df['couleur'] == 'brown']['Animal'])] 
関連する問題