我正在寻找等效于SQL窗口聚合函数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中的每一行:
每个客户的不同天数。
在此先感谢您的帮助
最佳答案
我认为您也不需要按周分组,只需调用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