table = (df.groupby('name')['activity'].value_counts().unstack().fillna(0))
У меня есть таблица, которую я хочу создать, я могу создать ее на python, но я хотел бы создать ее в sql, чтобы получить ее, как показано ниже:
activity tv football cooking chatting
name
chandler 0 0 3 2
monica 1 1 2 0
ross 3 2 1 1
Я думаю, это должно быть что-то вроде этого, но я не мог продолжить.
SELECT name,
COUNT(CASE WHEN END) AS ,
COUNT(CASE WHEN END) AS
FROM dataset
GROUP BY name;






Итак, вам нужна агрегация условный:
SELECT name,
SUM(CASE WHEN activity = 'tv' THEN 1 ELSE 0 END) AS tv,
SUM(CASE WHEN activity = 'football' THEN 1 ELSE 0 END) AS football,
SUM(CASE WHEN activity = 'cooking' THEN 1 ELSE 0 END) AS cooking,
. . .
FROM dataset
GROUP BY name;
@james загляните в sqlalchemy, или вы можете просто сгенерировать свой оператор с пониманием списка и конкатенацией в python
как я могу это сделать, не записывая все условия, например, если есть 1000 различных действий? @Yogesh Sharma