Заказ мероприятия по дате - PullRequest
1 голос
/ 24 апреля 2019

У меня есть Pandas DataFrame для установок приложений, в котором на одну установку приходится по одной строке на пользователя - так что у пользователя, установившего несколько приложений, будет несколько строк.

В столбцах указаны имя пользователя, имя приложения и дата установки. Пользователь может установить несколько приложений в один и тот же день.

Как определить порядок установки приложений, когда приложения, установленные в тот же день, классифицируются как тот же порядок установки?

Я хотел бы передать имя пользователя, приложение и дату, а затем получить заказ

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

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Проверка с 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 голос
/ 24 апреля 2019

Предполагая типовой кадр данных

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]
...