Я работаю над упражнением, в котором подсчитываю процентное содержание случаев определенных событий в различных местах.
кадр данных выглядит примерно так:
event_id non_kinetic_events kinetic_events event_name
2000 rows × 4 columns
Конечная цель -в итоге получим фрейм данных, показывающий процент определенных событий в данном месте, например:
event_id Seattle
event_name
snowfal 20 10%
light rain 30 40%
heavy rain 15 20%
Ниже приведен пример операции группового режима, которая дает мне приведенный выше результат:
df_event = df[df.non_kinetic_events.apply(lambda x: x != '')]
df_city = df_event[df_event.city.apply(lambda x: x== 'Seattle')]
df_event_grouped = df_event.groupby(['event_name']).agg({'event_id':len})
grouped_events = df_city.groupby(['event_name']).agg({'event_id':len})
grouped_events['Seattle'] = (100 * grouped_events['event_id'] / df_event_grouped['event_id'])
grouped_events['Seattle'] = grouped_events['Seattle'].apply(lambda x: "{:.0f}%".format(x))
Все это работает нормально, за исключением случаев, когда в результате моей фильтрации df_city dataframe становится пустым , я получаю ValueError "все ключи должны быть одинаковой формы"
В идеале,если файл данных df_city пуст, я хочу увидеть этот результат:
event_id Phoenix
event_name
snowfal 0 0%
light rain 0 0%
heavy rain 0 0%
Каков наилучший способ решить эту проблему?