У меня есть такой фрейм данных:
id Gender TV Radio
0 M Daily Daily
1 F Monthly Weekly
2 M Weekly Weekly
3 F Daily Daily
Мне нужно изменить столбцы на значения, а значения на столбцы. Это мой желаемый вывод .
id Gender Daily Monthly Weekly
0 M TV NaN NaN
0 M Radio NaN NaN
1 F NaN TV Weekly
2 M NaN NaN TV
2 M NaN NaN Radio
3 F TV NaN NaN
3 F Radio NaN NaN
Я использую melt + pivot, но я теряю информацию. Вот что я использую.
idx = ['id', 'Gender']
m = df.melt(idx).pivot_table(index=idx,columns='value',values='variable',aggfunc='first')
out = m.reset_index(idx).rename_axis(index=None,columns=None)
Но я получаю только первое значение. Например, если ежедневно происходит для телевидения и радио, то я получаю только первое значение .. Я знаю, что я собираю только первое, но не знаю, какую функцию я могу использовать, чтобы получить все значения.
id Gender Daily Monthly Weekly
0 M TV NaN NaN
1 F NaN TV Weekly
2 M NaN NaN TV
3 F TV NaN NaN