Я не получил никакого ответа на этот вопрос, однако решил сам, без использования лямбады и без использования циклов. Добавив решение для справки:
Я заменил пустые ячейки в «идентификаторе клиента» на строковое значение «N / A» и использовал «group by» и «size ()» для получения количества билетов.
Решение, как показано ниже:
1 - Сортировка df для первой пустой ячейки / ячеек со значением NAN:
df = (df[['Customer Name','Customer ID']]).sort_values(by=["Customer Name","Customer ID"],axis = 0,ascending = [True,True],na_position='first')
2- Заменить пустую ячейку в столбце «Идентификатор клиента» на строку «N / A»:
df['Customer ID'] = df['Customer ID'].replace(np.nan, 'N/A')
3- Используйте group by для группировки df по двум столбцам, приоритет отдается «Имя клиента»
4- размер будет использоваться для количество строк
5- Для добавления имени столбца "Ticket Count" в df необходимо сбросить индекс:
df = ((df.***groupby***(["Customer Name","Customer ID"],as_index = False)).***size()***.***reset_index(name="Ticket Count"***))
6- Заменили 'N / A' на '':
df["Customer ID"] = df["Customer ID"].replace('N/A','')
7- Вывод, аналогичный приведенному ниже: