【问题标题】:Group by date and count values in pandas dataframe在熊猫数据框中按日期和计数值分组
【发布时间】:2020-10-22 07:22:45
【问题描述】:

我有以下 pandas 数据框(我正在使用 python):

import pandas as pd

df = pd.DataFrame({
'date': ['2020-07-01', '2020-07-01', '2020-07-01', '2020-07-01', '2020-07-02', '2020-07-02', '2020-07-02'],
'value': ['abc', 'abc', 'abc', 'bb', 'bb', 'bb', 'c']})

df.head(7)

    date    value
0   2020-07-01  abc
1   2020-07-01  abc
2   2020-07-01  abc
3   2020-07-01  bb
4   2020-07-02  bb
5   2020-07-02  bb
6   2020-07-02  c

我怎样才能得到这个:

    date    value  count
0   2020-07-01  abc  3
1   2020-07-01  bb   1
2   2020-07-02  bb   2
3   2020-07-02  c    1

或者这个:

    date    value  count
0   2020-07-01  abc  3
                bb   1
1   2020-07-02  bb   2
                c    1

两种解决方案对我来说都同样适用。

【问题讨论】:

    标签: pandas dataframe sorting group-by count


    【解决方案1】:

    试试这个:

    df2 = df.groupby(by = ['date','value'])['value'].count().to_frame(name='count')
    
    

    结果:

                      count
    date       value       
    2020-07-01 abc        3
               bb         1
    2020-07-02 bb         2
               c          1
    
    

    或:

    df2 = df.groupby(by = ['date','value'])['value'].count().to_frame(name='count').reset_index()
    

    给出:

             date value  count
    0  2020-07-01   abc      3
    1  2020-07-01    bb      1
    2  2020-07-02    bb      2
    3  2020-07-02     c      1
    

    【讨论】:

      【解决方案2】:

      我们可以value_counts

      s=df.groupby('date').value.value_counts().to_frame('count')
                        count
      date       value       
      2020-07-01 abc        3
                 bb         1
      2020-07-02 bb         2
                 c          1
      

      【讨论】:

        【解决方案3】:

        .agg() 函数中使用value_counts

        df.groupby('date').agg(count=('value', 'value_counts')).reset_index()
        
        
        
             date value  count
        0  2020-07-01   abc      3
        1  2020-07-01    bb      1
        2  2020-07-02    bb      2
        3  2020-07-02     c      1
        

        【讨论】:

          猜你喜欢
          • 2021-12-26
          • 1970-01-01
          • 2019-10-14
          • 2023-03-20
          • 2017-10-17
          • 2021-12-23
          • 2017-05-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多