データフレームが与えられた場合、列に重複した値を持たない重複インデックスを取得し、どの値が異なるかを確認したいと思います。
具体的には、次のデータフレームがあります。
import pandas as pd
wget https://www.dropbox.com/s/vmimze2g4lt4ud3/alt_exon_repeatmasker_intersect.bed
alt_exon_repeatmasker = pd.read_table('alt_exon_repeatmasker_intersect.bed', header=None, index_col=3)
In [74]: alt_exon_repeatmasker.index.is_unique
Out[74]: False
また、インデックスの一部には 9 列目の値 (この位置の DNA 反復要素のタイプ) が重複しており、個々の位置 (各インデックス = ゲノムの位置) の反復要素の異なるタイプが何であるかを知りたいです。
これには何らかのものが必要になると思いますgroupby
が、できればgroupby
忍者が助けてくれることを願っています。
さらに単純化するために、インデックスと繰り返しタイプだけがあれば、
genome_location1 MIR3
genome_location1 AluJb
genome_location2 Tigger1
genome_location3 AT_rich
したがって、出力では、すべての重複インデックスとその繰り返しタイプを次のように表示したいと思います。
genome_location1 MIR3
genome_location1 AluJb
編集: おもちゃの例を追加しました
ベストアンサー1
これも便利で非常に簡潔です:
df[df.index.duplicated()]
これは重複した行の 1 つだけを返すことに注意してください。したがって、重複した行をすべて表示するには、次のようにします。
df[df.index.duplicated(keep=False)]