我有一个如下所示的数据集:
评论 | 推荐 | 游戏名称 |
---|---|---|
评论...好 | 推荐 | 游戏1 |
评论...不好 | 不推荐 | 游戏1 |
最糟糕的游戏 | 不推荐 | 游戏1 |
评论...不推荐 | 不推荐 | 游戏1 |
评论...太棒了 | 推荐 | 游戏2 |
评论...游戏还可以 | 不推荐 | 游戏2 |
评论...游戏不好玩 | 不推荐 | 游戏2 |
惊人 | 推荐 | 游戏2 |
好游戏..推荐 | 推荐 | 游戏3 |
评论...好 | 推荐 | 游戏3 |
评论...好 | 推荐 | 游戏3 |
我打算根据以下条件统计每个游戏“推荐”和“不推荐”的出现次数来总结该表:
如果计数(推荐)> = 计数(不推荐)则输出推荐
IF计数(推荐)< Count(Not Recommended) THEN OUTPUT Not Recommended
我期望的最终输出是一个新的数据框或修改后的数据框,如下所示:
是_推荐 | 游戏名称 |
---|---|
不推荐 | 游戏1 |
推荐 | 游戏2 |
推荐 | 游戏3 |
我尝试了下面的 groupby 语句,但我不确定应该如何进一步进行:
df['recommended'] = df.groupby(['game_name','recommendation'])['recommendation'].transform('count')
mode
后,您可以在 groupby.agg
中使用 Categorical
来确保平局时所需的顺序:
cat = pd.CategoricalDtype(['Recommended', 'Not Recommended'], ordered=True)
out = (df['recommendation'].astype(cat)
.groupby(df['game_name'])
.agg(lambda x: x.mode()[0]).reset_index()
)
输出:
game_name recommendation
0 Game 1 Not Recommended
1 Game 2 Recommended
2 Game 3 Recommended