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;
关于python - 将 Pandas 操作转换为 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51542035/