我正在加载一些 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 个 DataFame 有一个名为“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
……我不知道为什么!?