Python - pandas ==> WINDOW聚合

时间:2015-03-06 10:36:36

标签: python sql pandas

我正在寻找相当于SQL窗口聚合函数的pandas OVER()

clients = np.array(['c1', 'c2'])
df = pd.DataFrame({'client' : clients[np.random.randint(0,2,10)],\
'day_w' : np.random.randint(1,8,25) })

df.groupby(['client','day_w']).size()

我想将以下信息添加到DataFrame中,每行 : 每个客户的分类天数。

提前感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我认为你也不需要在工作日进行分组,只需拨打transform并传递func nunique,这将返回不同日期的数量:

好的,我想我知道你现在的目标:

In [98]:

df['days per client'] = df.groupby(['client'])['day_w'].transform(pd.Series.nunique)
df
Out[98]:
   client  day_w  days per client
0      c2      3                6
1      c1      2                7
2      c1      5                7
3      c1      5                7
4      c2      4                6
5      c2      3                6
6      c2      7                6
7      c1      3                7
8      c2      2                6
9      c1      2                7
10     c1      6                7
11     c1      6                7
12     c1      4                7
13     c2      5                6
14     c1      6                7
15     c2      5                6
16     c2      7                6
17     c2      7                6
18     c1      2                7
19     c1      1                7
20     c2      2                6
21     c2      6                6
22     c1      7                7
23     c1      3                7
24     c1      4                7