0

私はいくつかのCSVファイルをロードしています:

apds = pandas.read_csv( out + '.apds.txt', sep='\t' )
cnds = pandas.read_csv( out + '.cnds.txt', sep='\t' )
gnds = pandas.read_csv( out + '.genotype.txt', sep='\t' )

アイデアは、同じインデックスを持つ 3 つの DataFrame を減らすことですが、gnds にロードされたファイルにはインデックスがないため、次のように追加する必要があります。

names = cnds.ix[ gnds.Index ][ 'ProbeSetName' ]
names = names.reset_index()[ 'ProbeSetName' ]
gnds[ 'ProbeSetName' ] = names

3 つの DataFames には、インデックスとして使用する「ProbeSetName」という列があります。

gnds = gnds.set_index( 'ProbeSetName' )
cnds = cnds.set_index( 'ProbeSetName' )
apds = apds.set_index( 'ProbeSetName' )

したがって、アイデアは、各 DataFrame の「ProbeSetName」の共通要素を使用して pandas の Serie を作成することです。

im = list( set.intersection( set( gnds.index ), set( cnds.index ), set( apds.index ) ) )
s = pandas.Series( im )

これで、「s」には 3 つの DataFrame の共通要素が含まれます。次の方法で DataFrame をフィルタリングできます。

apds_f = apds.ix[ s ]
cnds_f = cnds.ix[ s ]
gnds_f = gnds.ix[ s ]

そして、それは完全に機能しますが、私がそうするとき:

print len( apds_f ), len( cnds_f ), len( gnds_f )

私が得た:

697077 697077 697078

…なんでだかわからない!?

4

0 に答える 0