我有一个这样的表:
PC | 用户 | 周期|
---|---|---|
A | U1 | 2020/01 |
A | U2 | 2020/02 |
A | U3 | 2020/03|
A | U4 | 2020/04 |
B | U1 | 2020/01 |
B | U2 | 2020/02|
B | U2 | 2020/03
您可以使用groupby
、transform
和cumcount
:
# Use lazy groups
gpc = df.groupby('PC')['PC']
gus = df.groupby('USER')['Period']
df['Max Con Per PC'] = gpc.transform('size')
df['Count Con Per PC'] = gpc.cumcount() + 1
df['Max Con Per USER'] = gus.transform('size')
df['Count Con Per USER'] = gus.cumcount() + 1
输出:
>>> df
PC USER Period Max Con Per PC Count Con Per PC Max Con Per USER Count Con Per USER
0 A U1 2020/01 4 1 2 1
1 A U2 2020/02 4 2 3 1
2 A U3 2020/03 4 3 1 1
3 A U4 2020/04 4 4 1 1
4 B U1 2020/01 3 1 2 2
5 B U2 2020/02 3 2 3 2
6 B U2 2020/03 3 3 3 3