У меня есть кадр данных, как показано ниже
df = pd.DataFrame({
'R_Id':[11,21,3,14,51,22],
'R_name' : ['READ_11','READ_21','READ_3','READ_14','READ_51','READ_22']
})
Обратите внимание, что df будет содержать только уникальные идентификаторы
Это запрос, который я писал вручную
select person_id,
count(*) filter (where reading = 11) as cnt_read_11,
min(value) filter (where reading = 11) as min_read_11,
max(value) filter (where reading = 11) as max_read_11,
avg(value) filter (where reading = 11) as avg_read_11,
stddev(value) filter (where reading = 11) as stdev_read_11,
count(*) filter (where reading = 21) as cnt_read_21,
min(value) filter (where reading = 21) as min_read_21,
max(value) filter (where reading = 21) as max_read_21,
avg(value) filter (where reading = 21) as avg_read_21,
stddev(value) filter (where reading = 21) as stdev_read_21,
from table
group by person_id;
Как видите, шаблон следует трем правилам
a) В каждом чтении будет 5 операторов (count,min,max,avg,stddev
)
b) Извлеките R_Id
из df и поместите его в where
условие
c) Извлеките R_name
из df и поставьте его в конце имени каждого столбца. Пример: cnt_read_11
, min_read_11
и т. Д.
Можете ли вы помочь мне автоматизировать это и сгенерировать запрос для всех показаний, присутствующих в df ?