Поиск и текущие итоги в Pandas

#python #pandas

#python #pandas

Вопрос:

У меня есть 3 фрейма данных в Pandas:

1) user_interests:

С «пользователем» в качестве идентификатора и «интересом» в качестве интереса:

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

2) similarity_score:

С «пользователем» в качестве уникального идентификатора, соответствующего идентификаторам в user_interests:

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

3) similarity_total:

С «интересом», представляющим собой список всех уникальных интересов в user_interets:

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

Что мне нужно сделать:

Шаг 1: найдите интерес из similarity_table в user_interests

Шаг 2: Возьмите соответствующего пользователя из user_interests и сопоставьте его с пользователем в similarity_score

Шаг 3: возьмите соответствующий similarity_score из similarity_score и добавьте его к соответствующему интересу в similarity_total

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

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

Я знаю, что это можно сделать в Pandas в одной строке, однако я еще не там. Если кто-нибудь может указать мне правильное направление, это было бы потрясающе. Спасибо!

Ответ №1:

IIUC, я думаю, вам нужно:

 user_interest['similarity_score'] = user_interest['users'].map(similarity_score.set_index('user')['similarity_score'])

similarity_total = user_interest.groupby('interest', as_index=False)['similarity_score'].sum()
 

Вывод:

             interest  similarity_score
0           Big Data          1.000000
1          Cassandra          1.338062
2              HBase          0.338062
3              Hbase          1.000000
4               Java          1.154303
5            MongoDB          0.338062
6              NoSQL          0.338062
7           Postgres          0.338062
8             Python          0.154303
9                  R          0.154303
10             Spark          1.000000
11             Storm          1.000000
12     decision tree          0.000000
13            libsvm          0.000000
14  machine learning          0.000000
15             numpy          0.000000
16            pandas          0.000000
17       probability          0.000000
18        regression          0.000000
19      scikit-learn          0.000000
20             scipy          0.000000
21        statistics          0.000000
22       statsmodels          0.000000
 

Комментарии:

1. Спасибо, это действительно полезно

2. @SandyLee Всегда пожалуйста. Будьте в безопасности и будьте здоровы.

Ответ №2:

Я не уверен, какой код вы уже написали, но пробовали ли вы что-то подобное для слияния? Однако это не одна строка.

 # Merge user_interest with similarity_total dataframe
ui_st_df = user_interests.merge(similarity_total, on='interest',how='left').copy()

# Merge ui_st_df with similarity_score dataframe
ui_ss_df = ui_st_df.merge(similarity_score, on='user',how='left').copy()
 

Комментарии:

1.Спасибо, это действительно полезно