2017-08-10 40 views
3

我很新的Python到大熊猫图书馆,我一直在试图拼凑如何采取一个数据帧像这样如何使用熊猫来计算数据框中每个日期的值?

'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时遇到了一些麻烦。如果有人能够向我展示一种方法,或者如果已经得到回答,请指出我的方向正确,我将不胜感激。我已经耗尽了我的搜索能力,并最终决定在这里问我的第一个问题。如果我是个白痴,请温柔。

+0

'df.groupby([ '日期', '颜色'])Color.count()出栈(。 )' –

回答

5

您可以使用:

groupby + size为aggregting和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溶液,slowier:

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 
+0

非常感谢!它的工作,现在我必须教自己为什么。 –

+0

我为你添加一些链接,给我一秒钟 – jezrael

相关问题