Python 创建一个新列,并将其填充到pandas中的组和条件中

Python 创建一个新列,并将其填充到pandas中的组和条件中,python,pandas,Python,Pandas,Hel lo我有一个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 COL

Hel lo我有一个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 
感谢您的帮助

请在
COL1
上使用:



另一种解决方案是使用熊猫。分类的:

df['COL1'] =  pd.Categorical(df['COL1'], ['AB', 'CD', 'EF'], ordered=True)
df['NewCol'] = df.groupby('Groups')['COL1'].transform('min')
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     EF

你试了什么?您得到了哪个错误/输出?我知道如何使用groupby
df['newCOL']=df.groupby(['Groups'])
,但我不知道如何添加一个事实,即我想根据COL1容器添加AB、CD或EF。我想这是一个简化的示例。在应用程序中,条目的优先级是如何给出的,即通过某种自定义列表或其他方式按字典顺序给出的?
df['COL1'] =  pd.Categorical(df['COL1'], ['AB', 'CD', 'EF'], ordered=True)
df['NewCol'] = df.groupby('Groups')['COL1'].transform('min')
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     EF