Как обойти в цикле строки pandas и выполнить действие:
Имею таблицу: с несколькими столбцами "tpm_z" и "tpm_b". Необходимо рассчитать критерий Манна-Уитни в каждой строке и внести значение в новый столбец. Как это сделать с помощью цикла, пожалуйста помогите.

import scipy.stats as stats
g = GSE107991_sort8['tpm_b'].values[1] #получаю массив значений "tpm_b"
h = GSE107991_sort8['tpm_z'].values[1] #получаю массив знач "tpm_z"
a = stats.mannwhitneyu(g, h) # критерий Манна-Уитни
a[1]
Для 1 строки это работает! А как в цикле перебрать все строки датафрейма. И внести полученные значения в новый столбец? С благодарностью за помощь)
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Примените метод .apply() с лямбдой по оси 1
import scipy.stats as stats
import numpy as np # для генерации фрейма примера
GSE107991_sort8 = pd.DataFrame(np.random.random(6 * 5).reshape(5, -1), columns=['tpm_z'] * 3 + ['tpm_b'] * 3) # генерация фрейма примера
GSE107991_sort8['Критерий Манна-Уитни'] = GSE107991_sort8.apply(lambda x: stats.mannwhitneyu(x.tpm_b, x.tpm_z)[1], axis=1)
print(GSE107991_sort8)
tpm_z tpm_z tpm_z tpm_b tpm_b tpm_b Критерий Манна-Уитни
0 0.798550 0.824980 0.310633 0.654756 0.282464 0.851704 1.0
1 0.550607 0.721444 0.203296 0.912769 0.456363 0.755253 0.4
2 0.323942 0.098683 0.994570 0.720341 0.751356 0.719977 0.7
3 0.947694 0.298581 0.780326 0.319891 0.844548 0.381415 1.0
4 0.008772 0.211690 0.877987 0.344011 0.161551 0.406520 1.0