Я пытаюсь понять, как повернуть эту таблицу в Python.

example = {"ABC":{'2020-09':1.33,'2020-10':0.75,'2020-11':1.55},
"DEF":{'2020-09':1.22,'2020-10':1.75,'2020-11':2.73}}

df = pd.DataFrame(example)
df

Вывод приведенного выше кода

Я хочу, чтобы он поворачивался следующим образом:

example = {"Date":['2020-09','2020-10','2020-11','2020-09','2020-10','2020-11'],
"Col1":['ABC','ABC','ABC','DEF','DEF','DEF'],
"Col2":[1.33,0.75,1.55,1.22,1.75,2.73]}

df = pd.DataFrame(example)
df

Вывод приведенного выше кода

Я создал два словаря, чтобы просто проиллюстрировать проблему. У меня есть гораздо больший код, который генерирует первый кадр данных.

Вы не могли бы помочь мне с преобразованием первого датафрейма во второй?

<Спасибо

Приветствуем

BigNash88

Ответов: 1

Ответы (1)

Самая простая версия, вероятно

df.unstack()

что дает результат с мультииндексом:

ABC  2020-09    1.33
     2020-10    0.75
     2020-11    1.55
DEF  2020-09    1.22
     2020-10    1.75
     2020-11    2.73
dtype: float64

Если вам не нужен мультииндекс, вы можете сделать

df.unstack().reset_index()


    level_0     level_1     0
0   ABC     2020-09     1.33
1   ABC     2020-10     0.75
2   ABC     2020-11     1.55
3   DEF     2020-09     1.22
4   DEF     2020-10     1.75
5   DEF     2020-11     2.73

Альтернативный вариант,

df.reset_index().melt(id_vars='index', var_name='key', value_name='value')

    index   key     value
0   2020-09     ABC     1.33
1   2020-10     ABC     0.75
2   2020-11     ABC     1.55
3   2020-09     DEF     1.22
4   2020-10     DEF     1.75
5   2020-11     DEF     2.73

2022 WebDevInsider