Сортировка кадра данных pandas, где значения являются датой (как создать сводную_таблицу без агрегации)

avatar
kavm
9 августа 2021 в 06:06
113
1
0

У меня есть фрейм данных со столбцами A, B, C и Date. Меня не волнует C. Я хочу создать сводную таблицу, в которой у меня есть A в первом столбце, затем B, а затем в третьем столбце я хочу иметь даты.

Я получаю сообщение об ошибке

DataError: Нет числовых типов для агрегирования

Я просто хочу сделать что-то, что можно легко сделать в сводной таблице Excel.

Мне также нужно отсортировать даты.

Допустим, мой начальный df:

A         B          C        D
apple     sweet      funny    2019-07-02
apple     sweet      dummy    2016-11-25
apple     sweet      dff      2017-09-01
apple     sweet               NaT
orange    sour                2020-01-01
orange    sour       hhhg     2020-12-12
banana    neither             2015-01-01 

Я хочу получить:

    A         B         D
apple     sweet      NaT
          sweet      2016-11-25
          sweet      2017-09-01
          sweet      2019-07-02
orange    sour       2020-01-01
          sour       2020-12-12
banana    neither    2015-01-01
Источник

Ответы (1)

avatar
mozway
9 августа 2021 в 06:51
1

Похоже, что вы хотите сделать, это просто удалить C и установить A/B как index:

df.set_index(['A', 'B'])[['D']]

выход:

                         D
A      B                  
apple  sweet    2019-07-02
       sweet    2016-11-25
       sweet    2017-09-01
       sweet           NaT
orange sour     2020-01-01
       sour     2020-12-12
banana neither  2015-01-01

Примечание. вы можете захотеть отсортировать значения, но неясно, как это сделать. При сортировке по возрастанию D NaT должен быть последним, а не первым

Альтернативно иметь все в виде столбцов:

df.sort_values(['A', 'B', 'D']).drop('C', axis=1)