我有一个df,例如:
Groups COL1
G1 AB
G1 CD
G1 EF
G1 EF
G2 CD
G2 CD
G3 CD
G3 EF
G3 EF
G4 EF
G4 AB
G4 AB
G5 EF
G5 EF我想为每个组创建一个新列,其中添加相同的值AB、CD或EF。
如果至少有一个AB,所有的都有AB,如果没有AB,但至少在CD上,所有的都有CD,如果只有EF,所有的都有CF。
所以很卑鄙:
AB>CD>EF 在这里我应该得到:
Groups COL1 NewCOL
G1 AB AB
G1 CD AB
G1 EF AB
G1 EF AB
G2 CD CD
G2 CD CD
G3 CD CD
G3 EF CD
G3 EF CD
G4 EF AB
G4 AB AB
G4 AB AB
G5 EF EF
G5 EF EF 谢谢你的帮助
发布于 2020-06-13 11:19:11
使用,DataFrame.groupby on COL1和np.select
df['NewCol'] = (
df.groupby('Groups')['COL1']
.transform(
lambda s: np.select(
[s.eq('AB').any(), s.eq('CD').any(), s.eq('EF').any()], ['AB', 'CD', 'EF']))
)# print(df)
Groups COL1 NewCol
0 G1 AB AB
1 G1 CD AB
2 G1 EF AB
3 G1 EF AB
4 G2 CD CD
5 G2 CD CD
6 G3 CD CD
7 G3 EF CD
8 G3 EF CD
9 G4 EF AB
10 G4 AB AB
11 G4 AB AB
12 G5 EF EF
13 G5 EF EFhttps://stackoverflow.com/questions/62358910
复制相似问题