我正在寻找相当于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中,每行 : 每个客户的分类天数。
提前感谢您的帮助
答案 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