* обратите внимание, что я использую индексы столбцов, когда имя столбца не определено
Вы можете разделить таблицы с помощью
df['city'] = df.groupby(df.iloc[:, 0].isna().cumsum()).transform(first)
df.dropna(subset=df.columns[0], inplace=True)
df = df.loc[df[df.colmns[0]] != df.city]
Теперь df
будет иметь дополнительный столбец city
с заголовок таблицы, а заголовок и пустые строки были отброшены. Вы можете получить доступ к любой части этого столбца city
с помощью .str.split.str.get
df.city = df.city.str.split('-').str.get(1)
Наконец, вы хотите сохранить только столбец num
, что является самым простым шагом
df = df.iloc[:, [0, 4, 5]]
df = df.pivot(index='city', columns=df.columns[0], values=df.columns[1])