WedX - журнал о программировании и компьютерных науках

Сводные таблицы с дублирующимися данными в пандах

Этот вопрос тесно связан с тем, который я задал здесь, но это не так. такой же.

Мой вопрос: предположим, у меня есть сложенные данные, и я хочу повернуть эту таблицу по дате и имени. Мой вопрос: когда есть неоднозначные значения (более одного значения для одной и той же даты и имени), как я могу выбрать между ними?

Name Date         Value 
a    2016-05-01   5
b    2016-05-01   7
c    2016-05-01   7
c    2016-05-01   8
a    2016-06-01   4
b    2016-06-01   3
c    2016-06-01   2
d    2016-06-01   2

В идеале я хотел бы «выбрать» окончательное значение на основе другого столбца. Например, предположим, что мой набор данных:

Name Date         Value   PublishDate
a    2016-05-01   5       2016-04-01    
b    2016-05-01   7       2016-04-01
c    2016-05-01   7       2016-03-01
c    2016-05-01   8       2016-04-01
a    2016-06-01   4       2016-04-01
b    2016-06-01   3       2016-04-01
c    2016-06-01   2       2016-04-01
d    2016-06-01   2       2016-04-01

Затем между дубликатами [c,2016-05-01] я бы хотел, чтобы тот, который был опубликован последним, остался (PublishDate=2016-04-01), а другой был удален.

Возможно ли?

В конечном итоге мне нужен этот вывод, чтобы я мог выполнять над ним матричные операции.

Data/Name    a   b   c   d
2016-05-01   5   7   8   NaN
2016-06-01   4   3   2   2

Я рассмотрел этот вопрос, но это не так. совершенно то же самое, так как я хочу, чтобы одно значение было отброшено на основе своего рода «правила».

Но этот вопрос дает представление о том, что может быть какое-то использование pandas.pivot_table, чтобы помочь ее выполнить. Но я не мог найти его.

Спасибо !

11.04.2016

Ответы:


1

Я бы отсортировал по PublishDate, groupby то, что вы хотите, используя агрегатную функцию last. Он вернет последнюю строку (последняя дата публикации для вас) для каждого «Имени».

df = df.sort_index(by='PublishDate').copy()
df.reset_index(inplace=True)
grouped_df = df.groupby('Name').last()
11.04.2016
  • Спасибо за помощь. Это до того, как я поверну набор данных правильно? 11.04.2016
  • кроме того, я не могу группировать по акции. это должно быть что-то вроде группировки по Stock и Date. Является ли это возможным ? 11.04.2016
  • Еще одна проблема: после группировки я не могу повернуть фрейм данных, потому что индексы больше не Date и Stock, а сами значения. Я обновил вопрос, чтобы подчеркнуть, что в конечном итоге мне нужна матрица для выполнения матричных операций над Это. Если бы вы могли решить эти вопросы в своем ответе, я был бы очень благодарен 11.04.2016

  • 2

    Основываясь на ответе @dmb, я придумал следующий способ справиться с проблемами, которые я указал в комментариях:

    df = df.sort_values(by='PublishDate').copy()
    df = df.pivot_table(index = 'Date',columns = 'Stock',values = 'Value', aggfunc = 'last')
    
    11.04.2016
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]