【问题标题】:How to filter the groupby dataframe in a multiindexed data如何过滤多索引数据中的 groupby 数据框
【发布时间】:2022-09-27 20:46:41
【问题描述】:

我有一个这样的数据框:

df:
ID  Group   Score1
1     A       45       
2     A       12
3     B       33
3     C       64
.     .       .
.     .       .
15000 .       .

有数千个重复的 ID,总共 15 个组。 对于每个组,我想显示

  1. 大于或等于中值的唯一 ID 数
  2. 大于 40 分的唯一 ID 数
  3. 分数列第一个四分位数(0-25 个百分位范围)以下的唯一 ID 数
  4. 得分列第三个四分位数(第 75 - 100 个百分位数范围)以上的唯一 ID 数

    所以我的输出看起来像这样: 输出:

    Group  No of unique  No of unique  No of unique      No of unique
          IDs >= Median  IDs > 40       IDs below         IDs above the
                                      first quartile      third quartile
     A         56           25             17                 45
     B         33           78             28                 62
     C         23           36             38                 33
     .
     .
     P         39           28             26                 41
    

    谁能帮我这个? 非常感谢!

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    希望这有效。首先,我首先在原始数据框中创建了四个相应的列。然后创建df1,这是具有唯一ID 的数据框df。最后,使用 pd.groupby() 您可以创建所需的输出:

    df = pd.DataFrame({'ID': list(range(100)),
                       'Group': list('ABCDE')*20,
                       'Score1': np.random.randint(10, 99, 100)})
    
    df['No of unique IDs >= Median'] = df.Score1 >= df.Score1.median()
    df['No of unique IDs > 40'] = df.Score1 > 40
    df['No of unique IDs < first quartile'] = df.Score1 < df.Score1.quantile(0.25)
    df['No of unique IDs > third quartile'] = df.Score1 > df.Score1.quantile(0.75)
    
    df1 = df.groupby(['ID', 'Group']).any().reset_index()
    
    df1.groupby('Group').agg({'No of unique IDs >= Median': 'sum',
                              'No of unique IDs > 40': 'sum',
                              'No of unique IDs < first quartile': 'sum',
                              'No of unique IDs > third quartile': 'sum'})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 2021-08-01
      • 2018-08-01
      • 1970-01-01
      • 2017-05-18
      • 2015-05-28
      • 2019-10-26
      相关资源
      最近更新 更多