Как вставить фрейм данных внутри фрейма данных Pandas - PullRequest
0 голосов
/ 04 октября 2019

У меня есть два фрейма данных, которые имеют один общий столбец: пользователи и приложения. У каждого пользователя может быть несколько приложений, и у каждого приложения будет имя и дата установки.

После объединения обоих фреймов я получаю:

user_id ...  app_name  ins_date
user1   ...   app1      1/1/2020
user1   ...   app2      1/7/2020
user2   ...   NULL      NULL
user3   ...   app1      1/5/2020
user4   ...   app1      1/3/2020

Я хочу не повторять пользователей, но не теряю детали приложения. Можно ли вставить df приложения в пользовательский df?

Что-то вроде:

user_id ...  app
user1   ...   {'app_name': ['app1', 'app2'], 'ins_date': ['1/1/2020', '1/7/2020']}
user2   ...   NULL      
user3   ...   {'app_name': ['app1'], 'ins_date': ['1/5/2020']}
user4   ...   {'app_name': ['app1'], 'ins_date': ['1/3/2020']}  

Я пытался DataFrameGroupBy.apply(), но я могу создать список только с одним изколонны.

Есть ли другой способ?

1 Ответ

0 голосов
/ 04 октября 2019

Вы можете попробовать это

df.groupby('user_id').apply(lambda x: {'app_name': x['app_name'].tolist(), 'ins_date': x['ins_date'].tolist()})

output

user_id
user1    {'app_name': ['app1', 'app2'], 'ins_date': ['1/1/2020', '1/7/2020']}
user2    {'app_name': [nan], 'ins_date': [nan]}                              
user3    {'app_name': ['app1'], 'ins_date': ['1/5/2020']}                    
user4    {'app_name': ['app1'], 'ins_date': ['1/3/2020']}                    
dtype: object

Обновление: используется pd.set_option ('display.max_colwidth', -1) для отображения максимальной ширины столбца

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