熊猫:按日期返回发生次数

mea*_*ory 5 python group-by dataframe pandas

假设我有以下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
Run Code Online (Sandbox Code Playgroud)

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

           A  B
Date           
04-Jan-16  2  1
05-Jan-16  1  1
Run Code Online (Sandbox Code Playgroud)

我有一种感觉这涉及"groupby",但我不太了解它以使其成为上面的格式^

piR*_*red 5

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

pd.crosstab(df.Date, df.Col)

Col        A  B
Date           
04-Jan-16  2  1
05-Jan-16  1  1
Run Code Online (Sandbox Code Playgroud)


Max*_*axU 4

使用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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)