我有两个数据框。第一个df0:
Name CHR MAPINFO PMG APA
cg13869341 1 15865 0.8954256 0.8409144
cg14008030 1 18827 0.5941512 0.712414
cg12045430 1 29407 0.1110794 0.1302404
cg20826792 1 29425 0.177532 0.1304049
cg00381604 1 29435 0.09003246 0.04180672
cg20253340 1 68849 0.4738799 0.444899
结束第二个df1:
probe Chromosome Gstart Gend
A_23_P11744 1 4363 39806
A_33_P3365932 1 4363 39806
A_32_P923011 1 24554 46081
我想遍历 df0["MAPINFO"] 并删除不匹配条件的行并将方法附加到另一个 df。我的代码如下:
for pos in df0['MAPINFO']:
cond = (( pos < df1['Gstart']) & ( pos > df1['Gend']))
print df0.drop(df0[cond].index.values).mean(axis=0, skipna=True, level=None)
给出以下错误消息:
/usr/lib64/python2.7/site-packages/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/core/frame.py:2021: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
"DataFrame index.", UserWarning)
Traceback (most recent call last):
File "/home/ferreirafm/bin/cpg_means.py", line 239, in <module>
main()
File "/home/ferreirafm/bin/cpg_means.py", line 231, in main
import2df(infprobe, infchrom)
File "/home/ferreirafm/bin/cpg_means.py", line 20, in import2df
df0.drop(df0[cond].index.values)#.mean(axis=0, skipna=True, level=None)
File "/usr/lib64/python2.7/site-packages/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/core/frame.py", line 1995, in __getitem__
return self._getitem_array(key)
File "/usr/lib64/python2.7/site-packages/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/core/frame.py", line 2027, in _getitem_array
key = _check_bool_indexer(self.index, key)
File "/usr/lib64/python2.7/site-packages/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/core/indexing.py", line 1017, in _check_bool_indexer
raise IndexingError('Unalignable boolean Series key provided')
pandas.core.indexing.IndexingError: Unalignable boolean Series key provided
我几乎可以肯定,这样的代码曾经在以前版本的 Pandas 中工作过。但是,我无法弄清楚出了什么问题。任何帮助表示赞赏。
预期结果:观察到 df0 的最后一行将被删除,因为第一行 (15865) 的 df1 'MAPINFO' 超出了 df1 范围 Gstart 和 Gend。因此,结果将是 df0 中未删除行的列的平均值(PGM 和 APA 的平均值)。也就是说,生成的 df 将是:
Name CHR MAPINFO PMG APA
cg13869341 1 15865 0.8954256 0.8409144
cg14008030 1 18827 0.5941512 0.712414
cg12045430 1 29407 0.1110794 0.1302404
cg20826792 1 29425 0.177532 0.1304049
cg00381604 1 29435 0.09003246 0.04180672
df0 "cg20253340 1 68849 0.4738799 0.444899" 的最后一行被删除,并采用逐行的平均值。