#python #pandas #grouping #pandas-groupby
#python #панды #группировка #pandas-groupby
Вопрос:
У меня есть фрейм данных Pandas для установок приложений, в котором на каждого пользователя приходится по одной строке для каждой установки, так что пользователь, установивший несколько приложений, будет иметь несколько строк.
Столбцы — это имя пользователя, название приложения и дата установки. Пользователь может установить несколько приложений в один и тот же день.
Как я могу найти порядок возникновения установок приложений, при этом приложения, которые были установлены в тот же день, оцениваются как один и тот же порядок установки?
Я хотел бы передать пользователя, приложение и дату, а затем получить заказ
User App Date Order
0 A 1 4/23/2019 3
1 A 2 4/23/2019 3
2 A 3 4/20/2019 2
3 A 4 3/15/2019 1
4 B 1 3/1/2019 1
5 B 2 3/1/2019 1
6 B 3 3/1/2019 1
7 C 1 3/1/2019 1
8 C 2 5/1/2019 2
9 C 3 8/1/2019 3
Комментарии:
1. Можете ли вы включить образец вашего фрейма данных?
2. @rahlf23 — Я добавил пример того, чего я пытаюсь достичь. Приветствия
Ответ №1:
Проверьте с rank
df.Date=pd.to_datetime(df.Date)
df.groupby('User').Date.rank(method='min',ascending=True)
0 3.0
1 3.0
2 2.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 2.0
9 3.0
Name: Date, dtype: float64
df['Order']= df.groupby('User').Date.rank(method='min',ascending=True).astype(int)
Комментарии:
1. Приветствия @Wen-Ben, это привело меня туда, куда мне нужно было попасть. Спасибо!
Ответ №2:
Предполагается, что образец фрейма данных
User App Date
0 A 1 4/23/2019
1 A 2 4/23/2019
2 B 3 4/20/2019
3 B 4 3/15/2019
4 B 5 3/1/2019
5 C 6 3/1/2019
6 C 7 3/1/2019
Судя по всему, если вы пытаетесь сгруппировать приложения, которые были установлены в тот же день, вы можете сделать это с помощью groupby
df_grouped=df.groupby(['Date'])['App'].unique().reset_index()
в результате
Date App
0 3/1/2019 [5 6 7]
1 3/15/2019 [4]
2 4/20/2019 [3]
3 4/23/2019 [1 2]
Комментарии:
1. Привет @Nev1111 — большое вам спасибо за ответ, действительно ценю, что вы нашли время. Это почти то, что я ищу, я отредактировал вопрос с выводом, который я ищу. Надеюсь, это более иллюстративно. Приветствия