Есть select-запрос.
print("Connecting to database...")
db = psycopg2.connect(host='localhost', user='postgres', password = 'password', database = 'DB')
print("Connected!")
print("Processing...")
prefs = pd.read_sql("select distinct ord.user_id, line.variant_id, count(line.order_id) " +
"from spree_line_items line " +
"join spree_orders ord on(line.order_id=ord.id) " +
"where ord.state='shipped' and ord.user_id is not null " +
"group by line.variant_id, ord.user_id " +
"order by ord.user_id;"
, con=db)
prefs.columns=['user', 'var', 'mark']
print("Adding marks...")
prefs.loc[prefs.mark>1, 'mark']=5
prefs.loc[prefs.mark==1, 'mark']=4
Оценки проставляются в случае, если пользователь заказывал вариант товара 1 или более раз оценки 4 и 5 соответственно.
При выводе получившегося dataframe получаю следующую картину:
Внимание, вопрос! Как из данного dataframe сделать словарь вида: df_dict={user1:{var_id1 : mark1, var_id2 : mark2...},..., usern: {var_id : mark,....}} либо организовать dataframe, где user это 1ая строка, а var столбец индексации, тогда mark ячейка матрицы user на var.