2016-10-07 5 views
1

私は多少ファンダには新しいです。 データフレームが2つあり、words_dfです。 最初の列[[0]])は単語のリストです.2番目の値は、さらに下流のプロセスで使用したい値です。私は反対フィルタリングしたい言葉の第2のリストを持っている1つの列に基づいたブール値ベクトルを持つデータフレームをフィルタリングします。

    a:State-word occurrences 
0      FIRE   1535 
1      BRR   1189 
2      GREEN   521 
3     ORANGE   504 
4     PURPLE   503 
5      BLUE   482 
6     VIOLET   480 
7     YELLOW   445 
8     INDIGO   434 
9      BLACK   392 
10     WHITE   381 
11      PINK   322 
... 

: は次のようになります。 単語が私のfilter_listにある場合は、私のwords_dfの行を削除してください。

は、これまで私が管理している:私は、その後でこれを行うにしよう filter_list = words_df[[0]].isin(filter_list)

:ほとんど words_df[~filter_list]

それは一種の動作しますが、しません。 は、もう一方の端に次のようになります。

   a:State-word occurrences 
0      NaN   NaN 
1      NaN   NaN 
2      NaN   NaN 
3      NaN   NaN 
4     PURPLE   NaN 
5      NaN   NaN 
6      NaN   NaN 
7     YELLOW   NaN 
8     INDIGO   NaN 
9      NaN   NaN 
10      NaN   NaN 
11      NaN   NaN 

私はそれは次のようになりたいのですが:私は間違って

   a:State-word occurrences 
1     PURPLE   503 
2     YELLOW   445 
3     INDIGO   434 

何をしているのですか?

答えて

2

あなたはとても問題が `words_dfた答え

# Test data 
df = DataFrame({'a:State-word': ['FIRE','BRR', 'GREEN', 'ORANGE', 'PURPLE', 'BLUE', 'VIOLET'], 
       'occurrences': [1535, 1189, 521, 504, 503, 482, 480]}) 
filter_list = ['FIRE', 'BRR', 'GREEN', 'ORANGE', 'BLUE'] 
df 

# a:State-word occurrences 
# 0   FIRE   1535 
# 1   BRR   1189 
# 2  GREEN   521 
# 3  ORANGE   504 
# 4  PURPLE   503 
# 5   BLUE   482 
# 6  VIOLET   480 

df[~df['a:State-word'].isin(filter_list)] 

# a:State-word occurrences 
# 4  PURPLE   503 
# 6  VIOLET   480 
+0

に近かったが、[[0]]'私はCOLNAMEを使用していましたか?私はcolnameがあまりにも変わったように見えていたことを除いて、それを試してみませんでした!列の参照をインデックスで使用する理由は何ですか? – JoeM05

+1

'words_df [[0]]'は 'DataFrame'を返し、' Series'は返しません。インデックスを使用したいのであれば、私のアドバイスはこの 'df [〜、df.iloc [:、0] .isin(filter_list)]'のように明示的に 'iloc'を使うことです – Romain

関連する問題