【问题标题】:Pandas - groupby one column and then sort by all remaining columnsPandas - 按一列分组,然后按所有剩余列排序
【发布时间】:2020-11-11 10:52:59
【问题描述】:

我需要按“player_slug”对下面的数据框进行分组,然后然后对每个(数字)“平均”列的所有列进行排序。

请注意,列值已经是平均值。

这是df.head(5)

   player_slug  player_id player_nickname  player_team player_position  ...   DD_mean   DP_mean    status  price_diff  last_points
0   paulo-andre      37604     Paulo André          293             zag  ...  0.000000  0.000000  Provável        0.11          1.7
1       evandro      37614         Evandro          277             mei  ...  0.000000  0.000000    Dúvida       -1.78          2.8
2         betao      37646           Betão          314             zag  ...  0.000000  0.000000  Provável       -0.14          0.1
3  rafael-moura      37655    Rafael Moura          290             ata  ...  0.000000  0.000000  Provável        2.89         22.2
4         fabio      37656           Fábio          283             gol  ...  1.257143  0.057143  Provável        0.42          2.0

我尝试创建一个函数并传递所有功能,如下所示:

 columns = ['score_mean','score_no_cleansheets_mean','diff_home_away_s',
            'n_games','score_mean_home','score_mean_away','shots_x_mean','fouls_mean','RB_mean',
            'PE_mean','A_mean','I_mean','FS_mean','FF_mean','G_mean','DD_mean','DP_mean',
            'price_diff','last_points']

def sorted_medias(df, feature=None):
    df_agg = df.groupby(['player_slug', 'player_team']).agg({feature:'sum'}).sort_values(feature, ascending=False)
    print (df_agg)

最后:

for feature in columns:
   sorted_medias(df_medias, feature)

但我不确定在 agg 中使用“sum”或“mean”,因为值已经是均值。

这里的路怎么走?

【问题讨论】:

  • 我不明白你的问题...也许我不清楚
  • 我只想按玩家分组,然后对已经存在的值进行排序,最后将每个排序的行放在一个唯一的数据框中。
  • 示例:按球员分组,然后按目标对球员进行排序。 groupby player 再次,但然后按不同的列对玩家进行排序。等等。
  • 如果我已经有了平均值,为什么还需要mean()
  • 如果你已经有平均值然后选择一个(我假设每个有多行相同球员的平均目标会重复正确?)df.groupby(['player_slug'])['goals'].min().sort_values(ascending=False)我做了min你也可以做@ 987654328@ 因为所有值都相同

标签: python pandas


【解决方案1】:

看起来这就是 OP 所要求的。按玩家分组并选择组内的任何值,因为这些值已经聚合。

df.groupby(['player_slug'])['goals'].min().sort_values(ascending=False)

【讨论】:

    猜你喜欢
    • 2020-12-14
    • 2019-01-13
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 2016-11-07
    • 2019-10-17
    相关资源
    最近更新 更多