删除相同应用名称但评论数量不同的多行
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 与不可能的系列进行比较。
我有一个包含很多列的数据框,其中 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 与不可能的系列进行比较。