После использования groupby в определенных столбцах фрейма данных и последующего использования команды apply, чтобы проверить, существует ли строка в другом столбце, pandas возвращает только те столбцы, по которым был сгруппирован, и последний столбец, созданный с применением. Можно ли вернуть все столбцы, связанные с groupby, и проверить? Например, группировка по уникальным идентификаторам для цепочки разговоров и проверка, существует ли строка в другом столбце, но затем включить некоторые другие столбцы, которые существуют в кадре данных, но принадлежат определенной группе?
Я пытался использовать groupby, а затем применить apply для анонимной функции.
df.head()
shipment_id shipper_id courier_id Question sender
0 14 9962 228898 Let's get your furbabys home Apple pet transpo... courier
1 91919 190872 196838 Hi I'm kevin thims and I'm happy to do the job... courier
2 92187 191128 196838 Hi I'm kevin thims and I'm happy to do the job... shipper
unique_thread_indentifier = ['shipment_id', 'shipper_id', 'courier_id']
required_variables = ['shipment_id', 'shipper_id', 'courier_id', 'Question', 'sender']
df_new = (
df
.groupby(unique_thread_indentifier)[required_variables]
.apply(lambda group: 'shipper' in group['sender'].unique())
.to_frame(name='shipper_replied')
.reset_index()
)
df_new.head()
shipment_id shipper_id courier_id shipper_replied
0 14 9962 228898 False
1 91919 190872 196838 False
2 92187 191128 196838 True
Я собираюсь включить столбцы Question
и sender
в окончательный фрейм данных. Ожидаемый результат будет выглядеть следующим образом:
shipment_id shipper_id courier_id Question sender shipper_replied
0 14 9962 228898 Let's get your furbabys home Apple pet transpo... courier False
1 91919 190872 196838 Hi I'm kevin thims and I'm happy to do the job... courier False
2 92187 191128 196838 Hi I'm kevin thims and I'm happy to do the job... shipper True