【问题标题】:Pandas: return number of occurrences by datePandas:按日期返回出现次数
【发布时间】:2017-09-14 18:49:54
【问题描述】:

假设我有以下 DataFrame

dic = {"Date": ["04-Jan-16", "04-Jan-16", "04-Jan-16", "05-Jan-16", "05-Jan-16"], 
       "Col": ['A', 'A', 'B', 'A', 'B']}

 df = pd.DataFrame(dic)

 df

  Col       Date
0   A  04-Jan-16
1   A  04-Jan-16
2   B  04-Jan-16
3   A  05-Jan-16
4   B  05-Jan-16

我需要返回第二个 DataFrame,它按天列出 A 和 B 的出现次数。即

           A  B
Date           
04-Jan-16  2  1
05-Jan-16  1  1

我感觉这涉及到“groupby”,但我对它的了解还不够,无法将其转换为上面的格式^

【问题讨论】:

    标签: python pandas dataframe group-by


    【解决方案1】:

    使用pivot_table方法:

    In [116]: df.pivot_table(index='Date', columns='Col', aggfunc='size') \
                .rename_axis(None, axis=1)
    Out[116]:
               A  B
    Date
    04-Jan-16  2  1
    05-Jan-16  1  1
    

    unstack():

    In [121]: df.groupby(['Date', 'Col']).size().unstack('Col')
    Out[121]:
    Col        A  B
    Date
    04-Jan-16  2  1
    05-Jan-16  1  1
    

    【讨论】:

      【解决方案2】:

      您可以使用内置的pandas 来执行此操作pd.crosstab

      pd.crosstab(df.Date, df.Col)
      
      Col        A  B
      Date           
      04-Jan-16  2  1
      05-Jan-16  1  1
      

      【讨论】:

        猜你喜欢
        • 2019-08-17
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-04
        • 2021-02-28
        相关资源
        最近更新 更多