2 лучших продукта рассчитывают в день Pandas - PullRequest
0 голосов
/ 07 января 2020

У меня есть датафрейм, как в приведенном ниже пи c.

Первый; Мне нужны 2 лучших продукта, во-вторых, мне нужны 2 лучших продукта в день, поэтому мне нужно сгруппировать их по дням и выбрать столбец 2 лучших продуктов из продуктов, я пробовал этот код, но он выдает ошибку.

df.groupby("days", as_index=False)(["products"] == "Follow Up").count()

введите описание изображения здесь

1 Ответ

0 голосов
/ 07 января 2020

Вам нужно groupby в течение дней и продуктов, а затем использовать size. Как только вы это сделаете, у вас будет все количество в df, которое вам требуется.

Затем вам нужно будет отсортировать как day, так и столбец 0 по умолчанию, который теперь содержит ваши значения. Это было создано путем сброса индекса на начальный groupby.

* 1010. * Мы следуем инструкциям в Pandas получаем самые верхние n записей в каждой группе , чтобы получить желаемый результат.

Полный пример:

Настройка:

df = pd.DataFrame({'day':[1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3],
'value':['a','a','b','b','b','c','a','a','b','b','b','c','a','a','b','b','b','c']})
df.head(6)

    day value
0   1   a
1   1   a
2   1   b
3   1   b
4   1   b
5   1   c
df_counts = df.groupby(['day','values']).size().reset_index().sort_values(['day', 0], ascending = [True, False])
df_top_2 = df_counts.groupby('day').head(2)
df_top_2

   day value 0
1   1   b   3
0   1   a   2
4   2   b   3
3   2   a   2
7   3   b   3
6   3   a   2

Конечно, вы должны переименовать столбец 0 во что-то еще разумно, но это минимальный пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...