У меня есть фрейм данных, как показано ниже:
df_detail =
car_brand car_type
0 Toyota Sedan
1 Toyota Truck
2 Honda Truck
3 Mazda Sedan
4 Mazda Convertible
Я хочу создать сводный фрейм данных, как показано ниже:
df_summary=
ID car_brand count_Sedan count_Truck count_Convertible
0 Toyota 1 1 0
1 Honda 0 1 0
2 Mazda 1 0 1
Есть ли способ создать столбцы count_, используя pandas? Я пробовал следующее:
import pandas as pd
d = {'car_brand':['Toyota','Toyota','Honda','Mazda','Mazda'],'car_type':['Sedan','Truck','Truck','Sedan','Convertible']}
df_detail = pd.DataFrame(data=d)
df_summary = pd.DataFrame({'car_brand':[]})
df_summary['car_brand'] = df_detail['car_brand'].unique()
df_summary['count_Sedan']=df_detail[((df_detail['car_brand']==df_summary['car_brand']) &
(df_detail['car_type']=='Sedan'))].count()
Получаю сообщение об ошибке:
ValueError: Can only compare identically-labeled Series objects
ОТВЕТ:
df_detail.set_index('car_brand')['car_type'].str.get_dummies().sum(level=0).add_prefix('count_').reset_index()