У меня есть файл json, который при преобразовании в фрейм данных выглядит примерно так:
sl no. id name value date
1 101 Math 90 -
2 101 Phy 87 -
3 201 Math 85 -
4 201 Phy 93 -
(Не фактические данные, но по тому же принципу с несколькими повторяющимися записями с одной отличающейся категорией)
То, чего я пытаюсь достичь, выглядит примерно так:
sl no. id Math Phy date
1 101 90 87 -
...
Есть ли способ легко преобразовать эти категориальные записи в столбцы с одинаковыми именами вместо нескольких повторяющихся записей для каждого учащегося?






Для этого вы можете использовать pandas.pivot(). Предполагая, что id — это столбец, который вы хотите использовать для каждой строки, это будет ваш index (вы можете передать список, если здесь есть другие столбцы, которые можно использовать). name — это столбец, который нужно превратить в столбцы, а values указывает данные, которые будут отображаться в новом сводном фрейме данных. Что выглядит так:
df.pivot(index='id', columns='name', values=['value', 'date'])
Что возвращает:
value date
name Math Phy Math Phy
id
101 90 87 date1 date2
201 85 93 date3 date4
(Предполагая, что вы хотите сохранить как математические, так и физические даты)
Чтобы удалить многоиндексные столбцы, вы можете переименовать их, используя:
df_pivot = df.pivot(index='id', columns='name', values=['value', 'date'])
df_pivot.columns = [' '.join(cols) for cols in df_pivot.columns]
Предоставление:
value Math value Phy date Math date Phy
id
101 90 87 date1 date2
201 85 93 date3 date4
Какую дату вы хотите сохранить? Что, если у математики и физики разные даты?