Вы можете попробовать что-то вроде этого -
import pandas as pd, numpy as np
quantiles_0.75 = pd.DataFrame(np.where(df<=df.quantile([0.75]).loc[0.75], 1, 2), columns=df.columns])
Обратите внимание, что приведенное выше создаст кадр данных quantiles_0.75
с теми же столбцами, что и df
, но со значениями в соответствии с правилом, которое вы указали.
В случае большего количества условий, я думаю, измененная версия сообщения @ David также будет полезна, если вы хотите получить результат в кадре данных -
temp = pd.DataFrame(np.where(df <= df.quantile(0.2), 1, np.where((df > df.quantile(0.2)) & \
(df <= df.quantile(0.4)), 2, \
np.where((df > df.quantile(0.4)) & \
(df <= df.quantile(0.6)), 3, 4)), columns=df.columns)