2

2 つの DataFrame があります。最初の 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

2 番目の 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 で機能していたことはほぼ確実です。しかし、私は何がうまくいかないのか理解できません。どんな助けでも大歓迎です。

期待される結果: 最初の行 (15865) の df1 'MAPINFO' が df1 の範囲 Gstart と Gend の外にあるため、df0 の最後の行が削除されることを確認します。したがって、結果は、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" が削除され、行ごとの平均が取得されます。

4

1 に答える 1