Какую функцию я могу использовать в кадре данных Pandas, чтобы выполнить это преобразование? - PullRequest
1 голос
/ 16 июня 2020

Я начинаю использовать pandas, и мне нужно знать, как выполнить следующее преобразование:

Исходный набор данных:

enter image description here

Желаемый набор данных:

enter image description here

Я пытался использовать df.pivot и pd.pivot_table, но не могу получить тот же результат . Я знаю, как это сделать в Excel, но я тоже пытаюсь учиться этим методом. Я не мог понять примеры в документации.

Я был бы признателен за помощь здесь!

1 Ответ

2 голосов
/ 16 июня 2020

Требуемое преобразование: pd.melt() ( документация ):

  • id_vars: кортеж, список или ndarray, необязательно Столбцы для использования в качестве переменных идентификатора.

  • value_vars кортеж, список или ndarray, необязательно Столбцы, которые нужно отменить. Если не указано, используются все столбцы, которые не заданы как id_vars.

  • var_name скаляр Имя для столбца "переменная". Если None использует frame.columns.name или 'variable'.

  • value_name скаляр, значение по умолчанию Имя для использования для столбца «значение».

df = pd.melt(df,
             id_vars = ['Regions'],
             value_vars = ['1°', '2°', '3°', '4°'],
             var_name = 'Label',
             value_name = 'Value')

Начальный фрейм данных:

                             Regions       1°     2°     3°     4°
0                             Africa    23.31  23.41  23.86  23.95
1                               Asia    18.95  19.21  20.35  20.42
2            Australia/South Pacific    17.01  17.33  17.11  17.37
3                             Europe    10.43  10.11  11.33  11.64
4                        Middle East    21.99  22.78  24.16  23.90
5                      North America    12.66  12.10  14.27  13.81
6  South/Central America & Carribean    22.13  22.39  23.00  22.88

Преобразованный фрейм данных:

                              Regions Label  Value
0                              Africa    1°  23.31
1                                Asia    1°  18.95
2             Australia/South Pacific    1°  17.01
3                              Europe    1°  10.43
4                         Middle East    1°  21.99
5                       North America    1°  12.66
6   South/Central America & Carribean    1°  22.13
7                              Africa    2°  23.41
8                                Asia    2°  19.21
9             Australia/South Pacific    2°  17.33
10                             Europe    2°  10.11
11                        Middle East    2°  22.78
12                      North America    2°  12.10
13  South/Central America & Carribean    2°  22.39
14                             Africa    3°  23.86
15                               Asia    3°  20.35
16            Australia/South Pacific    3°  17.11
17                             Europe    3°  11.33
18                        Middle East    3°  24.16
19                      North America    3°  14.27
20  South/Central America & Carribean    3°  23.00
21                             Africa    4°  23.95
22                               Asia    4°  20.42
23            Australia/South Pacific    4°  17.37
24                             Europe    4°  11.64
25                        Middle East    4°  23.90
26                      North America    4°  13.81
27  South/Central America & Carribean    4°  22.88
...