Как назначить постфикс для значений столбцов на основе ID_number

#python #pandas #group-by #data-science #jupyter

Вопрос:

Фрейм данных -gt; простой журнал событий с 3 столбцами.

Я хотел бы сгруппировать свой фрейм данных (добавив post_fix f.ex _step_1,_step_2 и т. Д.) На основе номера #приложения. Пожалуйста, смотрите пример, прилагаемый ниже. Не могли бы вы, пожалуйста, помочь мне решить эту проблему соответственно?

 data_example = {'applicationnumber': ['XYZ104183736AA', 'XYZ104183736AA', 'XDASDHGHG54G', 'XDASDHGHG54G','XDASDHGHG54G'], 'event_name': ['verification', 'verification', 'verification', 'verification','verification'],'working_time_in_seconds': [1000,2000,30000,10000,1004]} df_example = pd.DataFrame(data_example)  

Заранее большое спасибо! введите описание изображения здесь

Комментарии:

1. не могли бы вы добавить образец данных, легко воспроизводимых, пожалуйста?

Ответ №1:

Вы можете объединить столбцы вместе, используя a groupby.cumcount() , и рассматривать их как строки:

 df['event_name'] = df['event_name'].astype(str)    "_step_"     df.groupby('applicationnumber').cumcount().add(1).astype(str)  

С принтами:

 applicationnumber event_name working_time_in_seconds 0 XYZ104AA verification_step_1 54365 1 XYZ104AA verification_step_2 35453 2 XDA54G verification_step_1 342 3 XDA54G verification_step_2 52 4 XDA54G verification_step_3 123  

Я использовал этот образец DF :

 gt;gt;gt; df.to_dict()  {'applicationnumber': {0: 'XYZ104AA',  1: 'XYZ104AA',  2: 'XDA54G',  3: 'XDA54G',  4: 'XDA54G'},  'event_name': {0: 'verification',  1: 'verification',  2: 'verification',  3: 'verification',  4: 'verification'},  'working_time_in_seconds': {0: 54365, 1: 35453, 2: 342, 3: 52, 4: 123}}  

Обновленный:

 import numpy as np  df['event_name'] = np.where(  df.event_name.str.contains('_step_'),df.event_name,  df['event_name'].astype(str)    "_step_"     df.groupby('applicationnumber').cumcount().add(1).astype(str)  )  

Комментарии:

1. Знаете ли вы, как избежать «дополнительного добавления» постфикса,когда я запускаю ячейку несколько раз, например, это выглядит как проверка _ шаг_1_степ_1_степ_1 🙂 ? @sophocles

2. Простым решением было бы проверить, включен ли » шаг » уже в столбец. Смотрите обновление, пожалуйста.