如何使用pandas计算数据框中每个日期的值?

时间:2017-08-10 16:48:20

标签: python pandas

我对python中的pandas库非常陌生,我一直试图拼凑如何获取像这样的数据框

    'Date'  'Color'
0   '05-10-2017'    'Red'
1   '05-10-2017'    'Green'
2   '05-10-2017'    'Blue'
3   '05-10-2017'    'Red'
4   '05-10-2017'    'Blue'
5   '05-11-2017'    'Red'
6   '05-11-2017'    'Green'
7   '05-11-2017'    'Red'
8   '05-11-2017'    'Green'
9   '05-11-2017'    'Blue'
10  '05-11-2017'    'Blue'
11  '05-11-2017'    'Red'
12  '05-11-2017'    'Blue'
13  '05-11-2017'    'Blue'
14  '05-12-2017'    'Green'
15  '05-12-2017'    'Blue'
16  '05-12-2017'    'Red'
17  '05-12-2017'    'Blue'
18  '05-12-2017'    'Blue'

并输出一个具有唯一日期作为索引,颜色作为列标题,每天的值计数如下:

'Date'       'Red' 'Green' 'Blue'
'05-10-2017'     2       1      2 
'05-11-2017'     3       2      3
'05-12-2017'     1       1      3

过去两天我一直在努力搜索这个网站,试图拼凑出一种实现这一目标的方法,到目前为止我只能生成独特日期的索引。我在使用value_counts时遇到了一些麻烦。如果有人能够向我展示一种方法,或者如果已经回答了这个方法,我会很感激。我已经用尽了我的搜索能力,终于决定在这里问我的第一个问题。如果我是个白痴,请保持温柔。

1 个答案:

答案 0 :(得分:5)

您可以使用:

1。

groupby + size用于汇总,unstack用于重塑:

df1 = df.groupby(["'Date'","'Color'"]).size().unstack(fill_value=0)
print (df1)
'Color'       'Blue'  'Green'  'Red'
'Date'                              
'05-10-2017'       2        1      2
'05-11-2017'       4        2      3
'05-12-2017'       3        1      1

<强> 2

pivot_table解决方案:

df1 = df.pivot_table(index="'Date'",columns="'Color'", aggfunc='size')
print (df1)
'Color'       'Blue'  'Green'  'Red'
'Date'                              
'05-10-2017'       2        1      2
'05-11-2017'       4        2      3
'05-12-2017'       3        1      1

第3

crosstab解决方案,更慢:

df1 = pd.crosstab(df["'Date'"],df["'Color'"])
print (df1)
'Color'       'Blue'  'Green'  'Red'
'Date'                              
'05-10-2017'       2        1      2
'05-11-2017'       4        2      3
'05-12-2017'       3        1      1