2017-04-18 177 views
5

出现回数假设我有以下的数据帧熊猫:按日期

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 

我需要返回一个列出的出现和B天数的第二数据帧。即

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

我有一种感觉,这涉及到“GROUPBY”,但我不知道有足够的了解它进入它上面的格式^

回答

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 
4

您可以使用pandas内置t o做到这一点pd.crosstab

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

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

我会到那里.....有一天! – Vaishali