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" が削除され、行ごとの平均が取得されます。