Вероятно, не самый эффективный способ, но, возможно, он все еще помогает: -)
Я использовал пользовательскую функцию агрегирования sum_col_three(x)
с помощью apply()
и преобразовал результаты в новый столбец с помощью to_frame()
. После этого я разделил кортеж на две отдельные колонки с новыми DataFrame
и tolist()
:
def sum_col_three(x):
return sum(x['column_three']=='yes'), sum(x['column_three']=='no')
df = df.groupby(['column_one', 'column_two']).apply(sum_col_three).to_frame('yes')
df[['yes', 'no']] = pd.DataFrame(df['yes'].tolist(), index=df.index)
df
>> yes no
>>column_one column_two
>>apple headphones 2 0
>> iPad 0 2
>> iPhones 1 0
>> tv 0 1