考虑以下数据框片段,该片段已按Winner_Count排序。
Year Award Winner Name Winner_Count Winner_Pct
9347 2011 Best Actress 1.0 Meryl Streep 19 0.010144
9098 2009 Best Actress 0.0 Meryl Streep 19 0.010144
7483 1995 Best Actress 0.0 Meryl Streep 19 0.010144
6389 1985 Best Actress 0.0 Meryl Streep 19 0.010144
7835 1998 Best Actress 0.0 Meryl Streep 19 0.010144
所有我想做的就是groupby Name,所以我连续19次没有同一个演员(例如,看到Meryl,她的Winner_Count,只有一次会很好),但排序的顺序是保留的。到目前为止,我已经收到了各种错误消息,有时还有一个对象引用。我还没有看到一张桌子。我在这里看到的一些帖子建议制作一个groupby对象需要比Wes McKinney的视频中显示的内容要多得多,这很奇怪。
为什么这不是一个简单的df_new = df.groupby('Name')
?当/如果出现参考时,为什么对象不会自动出现?我似乎缺少关于groupby对象的基本内容,需要进行修正。思考?
编辑:
所需的数据集如下所示:每个actor有一行,而原始数据集中有几行。
Year Award Winner Name Winner_Count Winner_Pct
9347 2011 Best Actress 1.0 Meryl Streep 19 0.010144
5953 1981 Best Actress 1.0 Katharine Hepburn 12 0.006407
657 1938 Best Actress 1.0 Bette Davis 10 0.005339
答案 0 :(得分:1)
根据您的修改,我认为您需要df.drop_duplicates
:
In [352]: df_revised = df.drop_duplicates(subset='Name'); df_revised
Out[352]:
Year Award Winner Name Winner_Count Winner_Pct
0 2011 Best Actress 1.0 Meryl Streep 19 0.010144
它保留第一行并删除所有其余的重复项。如果您的数据按年排序,则此方法可以正常工作。
如果没有,请先使用df.sort_values
对其进行排序:
In [358]: df.sort_values(by=['Name', 'Year'], ascending=False, inplace=True)
答案 1 :(得分:0)
如果您只输入GameAccount
,它会为您提供一个groupby对象。我们必须在groupby之后使用聚合函数,例如df_new = df.groupby('Name')
,.sum()
等。
但是,您似乎想要删除名称列的重复项。您可以使用.mean()
之类的drop_duplicates
。
答案 2 :(得分:0)
对于获奖的奖项,您可以获得max
。
df.groupBy("Name").max("winner_count")