【问题标题】:Select the first row of each group after 'groupby()' and 'value_counts() function在 'groupby()' 和 'value_counts() 函数之后选择每个组的第一行
【发布时间】:2023-04-02 03:46:01
【问题描述】:

我有一个名为 new_data_set 的数据集,如下所示:

Image

我想找出每年出现次数最多的类型。

所以我这样做了:

new_data_set.groupby('release_year')['genre']).apply(lambda x: x.value_counts())`

它的结果是这样的:result

现在我需要从每个组中获取第一行以获得答案。所以结果应该是这样的:

1960 Drama
1961 Drama
.
.

我应该怎么做?

【问题讨论】:

    标签: pandas jupyter-notebook data-science data-analysis


    【解决方案1】:

    对于单线粉丝:

    df = new_data_set.mode()
    df
    
        release_year    genre
    0   2004            a
    1   2005            b
    

    【讨论】:

      【解决方案2】:

      解决方法很多,一个就是添加函数头:

      result = (new_data_set.groupby('release_year')['genre']
                          .apply(lambda x: x.value_counts().head(1))
                          .reset_index())
      print(result)
      

      【讨论】:

        【解决方案3】:

        添加index[0],然后添加reset_index

        new_data_set = pd.DataFrame({
                 'release_year':[2004,2005,2004,2005,2005,2004],
                 'genre':list('aaabbb')
        })
        
        df = (new_data_set.groupby('release_year')['genre']
                          .apply(lambda x: x.value_counts().index[0])
                          .reset_index()
                         )
        print (df)
           release_year genre
        0          2004     a
        1          2005     b
        

        【讨论】:

          猜你喜欢
          • 2021-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-19
          • 2019-11-03
          • 2021-07-11
          • 2023-03-24
          • 1970-01-01
          相关资源
          最近更新 更多