Сделайте несколько значений в другой столбец в Pandas - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть данные уровня недели, которые я хотел бы сделать в столбце. Это входные данные enter image description here

Вот как я хочу, чтобы вывод выглядел следующим образом: enter image description here

Образец :

print (df)
     Week  Category   Sales
0  202001    Red      100
1  202001    White    200
2  202002    Red      300
3  202002    White    700
4  201901    Red      800
5  201901    White    900
6  201902    Red      100
7  201902    White    200

Образец :

Выход:

     Week  Category   2019  2020
0    1     Red        800   100
1    1     White      900   900
2    2     Red        100   300
3    2     White      200   700

1 Ответ

5 голосов
/ 24 апреля 2020

Вы можете использовать деление по модулю и целому числу для извлечения year s и week, создания MultiIndex на DataFrame.set_index и последнего изменения на Series.unstack с преобразованием индекса в столбец и удаление имен столбцов с помощью DataFrame.rename_axis:

df1 = (df.set_index([df['Week'] % 100, df['Week'] // 100])['Sales']
         .unstack()
         .rename_axis(None, axis=1)
         .reset_index())
print (df1)

   Week  2019  2020
0     1   700   100
1     2   800   200
2     3   900   300

РЕДАКТИРОВАТЬ: Вам необходимо добавить имя столбца в set_index:

df1 = (df.set_index([df['Week'] % 100, 'Category', df['Week'] // 100])['Sales']
         .unstack()
         .rename_axis(None, axis=1)
         .reset_index())
print (df1)
   Week Category  2019  2020
0     1      Red   800   100
1     1    White   900   200
2     2      Red   100   300
3     2    White   200   700
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...