2017-11-21 9 views
-1

を働いていません。私も試してみたパンダフィルタリングはDF使用してdfを既存のサブセットとして、私は新しいを作成しようとしている

filtered_df = df[((df.col.astype(str) == "Developing") | (df.col.astype(str) == "Ineffective") & (df.col_16.astype(str) == "Developing") | (df.col_16.astype(str) == "Ineffective"))] 

を私は、さらに、それぞれorandため|&を切り替え試みたが、それは基本的に|または&を使用するように私に言って、エラーを生成します。一般的に同じ結果

私のデータを返す

は次のようになります。

ID loc col   col_16  col_17 col_18 
4568 12P Effective Ineffective Effective Developing 
8521 02F Ineffective Developing Effective Highly Effective 

所望の出力は、私が指定しただけの条件が満たされているDF(COLとcol_16のフィルタされたバージョンであります両方とも "開発中"または "非効果的")。サンプルデータでは、2行目のみが返されます。

+0

あなたは何をしたいですか?文字列を 'col'カラムだけと一致させようとしていますか? – Dark

+0

「FY151617」とは何ですか? – Goyo

+0

@Bharath:申し訳ありませんが、タイプミスが修正されました。 – LMGagne

答えて

2

あなたがまたは一緒にグループ化する声明保つ括弧のセット欠けているように見えます:

この試してみてください:あなたは、データをスライスするlocを使用することができ

filtered_df = df[(((df['col'] == "Developing") | (df['col'] == "Ineffective")) & ((df['col_16'] == "Developing") | (df['col_16'] == "Ineffective")))] 
1

を。元のデータセットがリストされていて、dfとして保存されていると仮定して、まずフィルタリングする単語を含むリストを作成します。 locを使用してhere位置する他のデータフレームスライサー上

content_to_filter_by = ['Developing','Ineffective'] 

new_df = df.loc[(df['col'].isin(content_to_filter_by))&(df['col_16'].isin(content_to_filter_by)),:].copy() 

ドキュメント。

関連する問題