代码之家  ›  专栏  ›  技术社区  ›  ah bon

Groupby和sort多列值引发AttributeError:“DataFrameGroupBy”对象没有属性“sort_值”

  •  1
  • ah bon  · 技术社区  · 3 年前

    对于下面的玩具数据集,我正在尝试分组 target_name 并按多列对值进行排序: valid_mse valid_r2_score 使用: df.groupby('target_name').sort_values(by=['valid_mse', 'valid_r2_score'], ascending=[True, False])

      target_name  train_mse  valid_mse  train_r2_score  valid_r2_score
    0         CPI   1.102079   1.842212        0.947458       -0.624665
    1         CPI   1.301734   1.890085        0.928005       -0.777463
    2         CPI   0.471222   1.078413        0.990599        0.311849
    3         PPI   0.113998   0.135523        0.662532        0.262387
    4         PPI   0.095434   0.176431        0.752242       -0.422994
    5         PPI   0.097648   0.174544        0.744522       -0.203880
    

    AttributeError: 'DataFrameGroupBy' object has no attribute 'sort_values' . 我还尝试使用 df.groupby('target_name').sort_values(by='valid_mse', ascending=True) ,它会引发相同的错误。

    有人知道我如何正确地解决这个问题吗?谢谢

    字典格式的数据:

    {'target_name': {0: 'CPI', 1: 'CPI', 2: 'CPI', 3: 'PPI', 4: 'PPI', 5: 'PPI'},
     'train_mse': {0: 1.102079409,
      1: 1.301734392,
      2: 0.471221642,
      3: 0.11399796,
      4: 0.09543417,
      5: 0.097647639},
     'valid_mse': {0: 1.842212034,
      1: 1.890085418,
      2: 1.078413107,
      3: 0.135523283,
      4: 0.176431247,
      5: 0.174543796},
     'train_r2_score': {0: 0.947458162,
      1: 0.928005473,
      2: 0.990599137,
      3: 0.662532128,
      4: 0.752241595,
      5: 0.744522334},
     'valid_r2_score': {0: -0.624665246,
      1: -0.777462993,
      2: 0.311849214,
      3: 0.262387135,
      4: -0.422993602,
      5: -0.203880075}}
    

    How to sort a dataFrame in python pandas by two or more columns?

    1 回复  |  直到 3 年前
        1
  •  2
  •   ah bon    3 年前

    没有 sort_values 在里面 groupBy

    df.sort_values(by=['target_name', 'valid_mse', 'valid_r2_score'],
                   ascending=[True, True, False])
    

    这将首先按target_name列排序,然后按valid_mse排序,然后按valid_r2_分数排序,因此可以说这就是您想要的:

      target_name  train_mse  valid_mse  train_r2_score  valid_r2_score
    2         CPI   0.471222   1.078413        0.990599        0.311849
    0         CPI   1.102079   1.842212        0.947458       -0.624665
    1         CPI   1.301734   1.890085        0.928005       -0.777463
    3         PPI   0.113998   0.135523        0.662532        0.262387
    5         PPI   0.097648   0.174544        0.744522       -0.203880
    4         PPI   0.095434   0.176431        0.752242       -0.422994