Как обойти в цикле строки 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
→ Ссылка