根据其他列的条件创建新列

Creating a new columns based on conditions from other columns

我有一个类似这样的数据框:

    Max        Min     Id
1    10        5      AAA
2    15        10     AAB
3    10        7      AAC 
4    20        15     AAD
5    15        10     AAE

我想在数据框中添加另一列,条件是最大值和最小值相同,因此 AAB 行和 AAE 行将具有相同的“分类”或“系列”。

我会有这样的东西:

     Max       Min    Id     Family
1    10        5      AAA      J
2    15        10     AAB      K
3    10        7      AAC      L
4    20        15     AAD      M
5    15        10     AAE      K

最好的方法是什么?

具有相同最大值和最小值的记录将具有相同的家族编号。

使用 apply 可能会使较大的数据帧变慢

def func(row):
    return df.loc[(df['Max']==row['Max']) & (df['Min']==row['Min'])]['Max'].idxmin()

df['Family'] = df.apply(func, axis=1)

   Max  Min  Family
0   10    5       0
1   15   10       1
2   10    7       2
3   20   15       3
4   15   10       1

编辑: 更快的方法来做同样的事情

df['idx'] = df.groupby(['Max', 'Min']).ngroup()