如何比较DataFrame中两个分组列值的计数?

问题描述 投票:0回答:1

我有一个如下所示的数据集:

评论 推荐 游戏名称
评论...好 推荐 游戏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')
python pandas dataframe data-cleaning
1个回答
0
投票

转换为

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
© www.soinside.com 2019 - 2024. All rights reserved.