Я смотрю, возможно ли это сделать с помощью python. У меня более 100 тем, несколько переменных, извлеченных в разные дни; Я хочу сделать имена переменных (написанные в строках) именами столбцов и соответствующим образом переместить их значения. Если это не имеет смысла, я прилагаю скриншот того, что я хочу сделать с помощью Python. Подскажите, пожалуйста, возможно ли это вообще, и если да, то как? Я не обязательно ищу конкретный сценарий, а просто общий поток? Спасибо!

СЛЕВА: то, что у меня есть. ПРАВИЛЬНО: что я хочу

-1
hek999 3 Апр 2020 в 10:19
Привет, hek999, добро пожаловать в SO! Вот несколько советов, как максимально эффективно использовать этот сайт. Во-первых, лучше поискать решения, прежде чем задавать вопрос. Например. это и это. Кроме того, не публикуйте изображения кода (или данных). Лучше включить немного того и другого в виде текста. Наконец, что-то вроде этого поможет df.pivot_table(index='subjID', columns='var_names', values='var_values').
 – 
Chris
3 Апр 2020 в 10:49

1 ответ

Попробуйте следующий код:

df.groupby('subjID').apply(lambda grp: grp.pivot(
    index='date', columns='var_names', values='var_values'))\
    .rename_axis(columns=None).reset_index()

Сначала я думал просто о pivot с индексом, установленным на subjID и date, но, к сожалению, pivot не подходит для таких случаев.

Я обнаружил, что это ошибка, о которой сообщалось на Pandas GitHub как о проблеме 21425.

Поэтому, чтобы обойти это ограничение, я сгруппировал по subjID, а затем называется pivot с index='date' в каждой группе.

Чтобы убедиться в необходимости rename_axis и reset_index, запустите мой код без этих функций и разница должна быть очевидна.

0
Valdi_Bo 3 Апр 2020 в 12:00
Спасибо, Valdi_Bo! Я определенно попробую это.
 – 
hek999
3 Апр 2020 в 11:19
1
Почему бы не pivot_table ?
 – 
jezrael
3 Апр 2020 в 11:26
pivot_table можно использовать, например. с aggfunc=np.sum, но он предназначен скорее для случаев, когда есть несколько строк для одного значения индекса (поэтому требуется некоторая агрегация). Но в этом случае для каждого индекса существует значение single, поэтому pivot кажется более естественным выбором.
 – 
Valdi_Bo
3 Апр 2020 в 11:56