Вы можете создать такой столбец с помощью:
df['col4'] = df.groupby(['col1', 'col2'])['col3'].transform('min')
Поскольку первое значение отсортированных элементов является минимальным.Обычно будет лучше использовать минимум по первому элементу отсортированного списка, так как вычисление минимума может быть сделано в O (n) .Для сортировки это зависит от самого алгоритма, так как существуют ленивые алгоритмы сортировки, которые иногда могут также получить первый элемент в O (n) , но я думаю, 'min'
проясняет, к чему вы стремитесьdo.
Для данного образца данных мы получим:
>>> df = pd.DataFrame({'col1': ['A']*5 + ['B']*4, 'col2': [0,0,0,1,1,0,0,1,1], 'col3': [2,1,3,3,4,3,1,0,1.0]})
>>> df
col1 col2 col3
0 A 0 2.0
1 A 0 1.0
2 A 0 3.0
3 A 1 3.0
4 A 1 4.0
5 B 0 3.0
6 B 0 1.0
7 B 1 0.0
8 B 1 1.0
>>> df['col4'] = df.groupby(['col1', 'col2'])['col3'].transform('min')
>>> df
col1 col2 col3 col4
0 A 0 2.0 1.0
1 A 0 1.0 1.0
2 A 0 3.0 1.0
3 A 1 3.0 3.0
4 A 1 4.0 3.0
5 B 0 3.0 1.0
6 B 0 1.0 1.0
7 B 1 0.0 0.0
8 B 1 1.0 0.0