Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python筛选数据帧获得意外的额外一行_Python_Pandas - Fatal编程技术网

python筛选数据帧获得意外的额外一行

python筛选数据帧获得意外的额外一行,python,pandas,Python,Pandas,我正在加载一些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个数据帧,但加载到gnds的文件没有索引,我必须将其添加为: names = cnds.ix[ gnd

我正在加载一些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个数据帧,但加载到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' )
因此,我们的想法是用每个数据帧的“ProbeSetName”的公共元素创建熊猫系列:

im = list( set.intersection( set( gnds.index ), set( cnds.index ), set( apds.index ) ) )
s = pandas.Series( im )
因此,“s”具有3个数据帧的公共元素。我可以使用以下方法过滤数据帧:

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

…我不知道为什么

是否有多行具有相同的索引?Try
g=pd.value\u计数(gnds\u.index);打印g[g>1]
。好的。。。就是这样!我有两个“S-4IYCH”元素。代码结果:S-4IYCH 2我可以问一下如何删除重复的行吗?我试图选择第一个实例“gnds_f=gnds_f.groupby(gnds_f.index).first()”对其进行分组,但我得到了一个错误:“AssertionError:Grouper和axis的长度必须相同”