#python #pandas
Вопрос:
Как преобразовать этот фрейм данных
Year Gender Count 2018 Female 4010 2018 Male 19430 2019 Female 3212 2019 Male 16138
Для
Year Male Female Ratio 2018 19430 4010 0.21 2019 16138 3212 0.20
использование groupby/pivot/любой пользовательской функции????
Ответ №1:
Что-то вроде этого:
new_df = df.pivot("Year", "Gender", "Count").assign(Ratio=lambda r: r.Female / r.Male) # To remove the "Gender" name from column index new_df.columns.name = None # Reset row index as column new_df = new_df.reset_index()
Результат:
Year Female Male Ratio 0 2018 4010 19430 0.206382 1 2019 3212 16138 0.199033
Комментарии:
1.
df.pivot(...).assign(...).rename_axis(columns=None).reset_index()
если бы ты не хотел разорвать цепь.2. @HenryEcker Рад знать этот
rename_axis
трюк!3. @TYZ, это работает!! Спасибо за решение.