删除相同应用名称但评论数量不同的多行

Deleting multiple rows under same App Name but with different number of reviews

我有一个包含很多列的数据框,其中 2 个是 'App' 和 'Reviews'。我发现对于同一个应用程序有多个行,因为它们的评论数量不同。自然地,假设它是最新的,则必须选择评论数量最多的行。例如:

现在有很多这样的应用程序有多个行,因此无法手动编辑它们。首先我通过:value_counts()函数找出每个app出现了多少次,并将其转换成一个字典,让app名称成为键和它的计数,对应的值。例如:

{'ROBLOX:9', '8 球 Pool:7', 'Bubble Shooter:6', 'Helix Jump:6'}

然后我创建了以下嵌套 for 循环来检查每个应用程序并仅保留评价最高的观察结果。

这行给我一个错误--> 如果 temp_df.iloc[temp_indices]['Reviews'] != max_review:

说: ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

你不需要为它创建字典和循环。这有点讨厌。 这里有 3 种方法可以解决这个问题。第一个和第二个解决方案将为每个 App 保留一行,而如果 max 值出现不止一次,第三个解决方案将保留多行。

(1)
df.loc[df.groupby('App')['reviews'].idxmax(),:]

(2)
df.sort_values(by=['App','reviews'],ascending=[True,False]).drop_duplicates('App',keep='first')

(3)
df.loc[df['reviews'] == df.groupby('App')['reviews'].transform('max')]

关于你的错误。您尝试将 number/string 与不可能的系列进行比较。