DataFrame: установить пользовательские значения при группировании - PullRequest
1 голос
/ 21 марта 2019
            user user_id age           swiped_in           swiped_out
        0    Bob       1  53  2019-02-25 09:50:32  2018-02-25 10:50:32
        1   Jane       2  34  2019-02-25 09:50:32  2019-02-25 11:50:32
        2  Alice       3  35  2019-02-25 09:50:32  2019-02-25 12:50:32
        3    Bob       1  54  2019-02-25 10:50:32  2019-02-25 11:30:32
        4    Bob       1  55  2019-02-25 11:31:32  2019-02-25 12:51:32
        5   Jane       2  34  2019-02-25 09:50:32  2019-02-25 11:50:32

И это мой код ..

c = ['swiped_in','swiped_out']
df[c] = df[c].apply(pd.to_datetime)
df = df.sort_values(c)   
df=df.groupby(['user','user_id']).agg({'swiped_in':'min','swiped_out':'max','age':'first'})

А теперь я могу получить следующий вывод.

                swiped_in          swiped_out age
user  user_id                                            
Alice 3       2019-02-25 09:50:32 2019-02-25 12:50:32  35
Bob   1       2019-02-25 09:50:32 2019-02-25 12:51:32  53
Jane  2       2019-02-25 09:50:32 2019-02-25 11:50:32  34

И что мне нужно, это ..

         swiped_in          swiped_out age
user  user_id                                            
Alice 3       2019-02-25 09:50:32 2019-02-25 12:50:32  35
Bob   1       2019-02-25 09:50:32 2019-02-25 12:51:32  ..
Jane  2       2019-02-25 09:50:32 2019-02-25 11:50:32  34

Если возраст такой же, тогда я могу заполнить данные как есть.Если он не уникален, мне нужно указать свое значение.

1 Ответ

0 голосов
/ 21 марта 2019

Попробуйте это в групповой части:

custom_value=5 #change this
df_new=(df.groupby(['user','user_id'])
        .agg({'swiped_in':'min','swiped_out':'max','age':
              lambda x:np.where(x.nunique()==1,next(iter(set(x))),custom_value)}))
print(df_new)


                       swiped_in          swiped_out  age
user  user_id                                             
Alice 3       2019-02-25 09:50:32 2019-02-25 12:50:32   35
Bob   1       2019-02-25 09:50:32 2019-02-25 12:51:32    5
Jane  2       2019-02-25 09:50:32 2019-02-25 11:50:32   34
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...