2016-07-06 2 views
4

「ウェブサイト」の値が複数回出現するすべての行を表示するとします。たとえば、あるWebサイト "xyz.com"が複数回出現した場合、それらの行をすべて表示したいとします。私は以下のコードを使用しています -特定の列の任意の値が複数回出現する行を表示する

df[df.website.isin(df.groupby('website').website.count() > 1)] 

上記のコードはゼロ行を返します。私はそのようなすべての行を表示するために、コードの私の第一の行を変更する必要がありますどのように

df.website.value_counts() 

- しかし、私は実際に以下のコードを実行することにより、複数回発生しているので、多くのウェブサイトがあることを見ることができますか?

答えて

6

subset='website'keep=Falseで使用duplicated

df[df.duplicated(subset='website', keep=False)] 

サンプル入力:

col1 website 
0 A abc.com 
1 B abc.com 
2 C abc.com 
3 D abc.net 
4 E xyz.com 
5 F foo.bar 
6 G xyz.com 
7 H foo.baz 

サンプル出力:

col1 website 
0 A abc.com 
1 B abc.com 
2 C abc.com 
4 E xyz.com 
6 G xyz.com 
+0

これは動作します!ありがとう。別の混乱があります。上記のコード行を使用した後、200行(200行に重複したWebサイトがあることを意味します)を取得します。 df.drop_duplicates(サブセット= 'ウェブサイト')を使用すると、2500行が削除されます。なぜそれが起こっているのですか?それはちょうど200の行を落とすべきではないか? – ComplexData

+0

すべての重複を削除したい場合は、 'df.drop_duplicates(サブセット= 'ウェブサイト'、keep = False)'を使用します。デフォルトで 'drop_duplicates'は複製の最初のインスタンスを保持し、' keep'で別途指定しない限り、残りを削除します。これはあなたが見ている動作を説明するものではなく、 'drop_duplicates'のテストは私にとっては期待どおりです。 – root

+0

もう少し深く掘り下げて、 'duplicated'の出力になかった行を削除したいかもしれません。それを調べることで、不一致を説明するのに役立ちます。 – root

関連する問題