Pandas:按日期返回出现次数

5
假设我有以下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

我需要返回第二个数据框,按日列出A和B的出现次数。例如:
           A  B
Date           
04-Jan-16  2  1
05-Jan-16  1  1

我有一种感觉这涉及到“groupby”,但是我不太了解它,无法将其转换为上述格式^。

2个回答

5
您可以使用内置的 pandas 来执行此操作,pd.crosstab
pd.crosstab(df.Date, df.Col)

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

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

或者使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接