У меня есть два DataFrames. Первый 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»] и уронить строки, которые не соответствуют условию и добавлять средства к другому ДФ. Мой код, как следует:
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
Я почти уверен, что такой кусок кода, используемые для работы в предыдущей версии Панды. Однако я не могу понять, что происходит не так. Любая помощь приветствуется.
Ожидаемые результаты: Обратите внимание, что последняя строка df0 будет удалена, так как df1 'MAPINFO' первой строки (15865) находится за пределами диапазона gfart и 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» удаляется и средства по ряду берется.
Что вы ожидаете ответа быть? Я не думаю, что этот код работал бы раньше. –
вы пытаетесь индексировать df0 указателями из df1, это * может * работать, но действительно нечетно, поскольку логические индексы не равны по длине массиву, которые пытаются индексировать, поэтому это может быть обертка. вы наверняка получите неожиданный результат. – Jeff
@ AndyHayden: Спасибо за комментарий. См. EDIT для ожидаемых результатов. – fred