Python 在groupby函数后添加一列
我想根据以下条件添加一列Python 在groupby函数后添加一列,python,pandas,Python,Pandas,我想根据以下条件添加一列 df = pd.DataFrame({'X' : ['M1', 'M1', 'M1', 'M2', 'M2', 'M3', 'M4', 'M4', 'M4', 'M4'], 'Total': [1,2,3,21,15,42,1,2,25,4]}) 预期产出: X Total P M1 1 P1 M1 2 P2 M1 3 P3 M2 21 P1 M2 15 P2 M3 42 P1 M4 1 P1 M4 2 P2 M4 25 P3 M4 4 P4
df = pd.DataFrame({'X' : ['M1', 'M1', 'M1', 'M2', 'M2', 'M3', 'M4', 'M4', 'M4', 'M4'], 'Total': [1,2,3,21,15,42,1,2,25,4]})
预期产出:
X Total P
M1 1 P1
M1 2 P2
M1 3 P3
M2 21 P1
M2 15 P2
M3 42 P1
M4 1 P1
M4 2 P2
M4 25 P3
M4 4 P4
您可以在X
列中,使用cumcount
进行聚合,并添加p
作为前缀:
df['P'] = 'P'+df.groupby('X').cumcount().add(1).astype(str)
X Total P
0 M1 1 P1
1 M1 2 P2
2 M1 3 P3
3 M2 21 P1
4 M2 15 P2
5 M3 42 P1
6 M4 1 P1
7 M4 2 P2
8 M4 25 P3
9 M4 4 P4
df['P'] = df.groupby(['X'])['Total'].agg({"p":"cumcount"})+1
df['P'] = 'P'+df['p'].astype(str)
print(df)
X Total P
0 M1 1 P1
1 M1 2 P2
2 M1 3 P3
3 M2 21 P1
4 M2 15 P2
5 M3 42 P1
6 M4 1 P1
7 M4 2 P2
8 M4 25 P3
9 M4 4 P4