У меня был следующий кадр данных (реальный кадр данных намного больше, чем этот):
sale_user_id sale_product_id count
1 1 1
1 8 1
1 52 1
1 312 5
1 315 1
Затем изменил его, чтобы переместить значения в sales_product_id в виде заголовков столбцов, используя следующий код:
reshaped_df=id_product_count.pivot(index='sale_user_id',columns='sale_product_id',values='count')
и результирующий кадр данных:
sale_product_id -1057 1 2 3 4 5 6 8 9 10 ... 98 980 981 982 983 984 985 986 987 99
sale_user_id
1 NaN 1.0 NaN NaN NaN NaN NaN 1.0 NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN 1.0 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN 1.0 NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
как вы можете видеть, у нас есть многоуровневый индекс, мне нужно иметь sale_user_is в первом столбце без многоуровневой индексации:
я использую следующий подход:
reshaped_df.reset_index()
результат будет таким, что у меня все еще есть столбец sale_product_id, но мне он больше не нужен:
sale_product_id sale_user_id -1057 1 2 3 4 5 6 8 9 ... 98 980 981 982 983 984 985 986 987 99
0 1 NaN 1.0 NaN NaN NaN NaN NaN 1.0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 3 NaN 1.0 NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 4 NaN NaN 1.0 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN
Я могу подмножить этот фрейм данных, чтобы избавиться от sale_product_id, но я не думаю, что это было бы эффективно. Я ищу эффективный способ избавиться от многоуровневой индексации при изменении формы исходного фрейма