Заменить значения в датафрейме в булевой логике

Рассчитываю один статистический показатель (проверка нормальности по Шапиро-Уилку). Результаты представляютяс в такой форме:

введите сюда описание изображения

Я же хочу, чтобы в столбце pvalue были не значенияю, а знчаения в булевой логике: если меньше или равно - то True, если больше - false

import pandas as pd
import scipy.stats as stats

def shap(col, hz):
    shapiro_test = stats.shapiro((col))
    df1 = pd.DataFrame({"statistic":[shapiro_test[0]],
                       "pvalue": [
                           if shapiro_test[1] <= 0.95:
                               print('True');
                           else:
                               print('False') ]})
    return df1.assign(column=col.name,
                      otrasl = hz)
res = pd.concat([shap(df[col]) for col in df)
res.to_excel("mmm.xlsx")

df- это мои данные

Прилагаю данные https://docs.google.com/spreadsheets/d/1yZM9bdSjs_8J9CxvUET8L4TjLRdyivtf6MfWy8zgZKE/edit?usp=sharing


Ответы (2 шт):

Автор решения: imitusov
import pandas as pd
import scipy.stats as stats

test = pd.read_csv('') # загружаем файл

colums_for_test = ['критерий_1', 'критерий_2', 'критерий_3'] # выбираем колонки для теста

res = test.loc[:, colums_for_test].apply(stats.shapiro) # получаем tuple с результатами
res = res.apply(pd.Series) #конертируем в DF
res.columns = ['statistic', 'pvalue']
res['pvalue'] = res['pvalue'] <= .95

В вашем случае вы можете просто дописать

res = pd.concat([shap(df[col]) for col in df)
res['pvalue'] = res['pvalue'] <= .95 #pvalue станет тип boolean
res.to_excel("mmm.xlsx")
→ Ссылка
Автор решения: Andrew

Так все очень просто, вот такая функция:

def shap(col, hz):
    shapiro_test = stats.shapiro((col))
    df1 = pd.DataFrame({"statistic":[shapiro_test[0]],
                        "pvalue": col[1] <= 0.95})
    return df1.assign(column=col.name,
                      otrasl=hz)

Получается такой датафрейм:

       statistic      pvalue
0      some_value      True
1      some_value      False
→ Ссылка