У меня есть приведенный ниже фрейм данных (product.csv), который я хочу преобразовать в векторное представление:
product_id,value
111,3000
121,2500
131,3500
141,1000
111,3300
151,2000
161,2300
171,1300
181,1500
191,4500
121,6000
121,1100
Мой ожидаемый результат должен включать все строки, включая повторяющиеся product_ids, и быть в векторной форме, как показано ниже :
[111: 3000; 121: 2500; 131: 3500; 141: 1000; 111: 3300; 151: 2000; 161: 2300; 171: 1300; 181: 1500; 191: 4500; 121: 6000; 121: 1100]
Это то, что я пробовал до сих пор:
import pandas as pd
df = pd.read_csv('product.csv') #, index_col=0, sep=','
my_dict_indx = df.set_index('product_id')['value'].to_dict()
print(my_dict_indx)
my_dict_zip = dict(zip(df.product_id, df.value))
print(my_dict_zip)
my_dict_groupby = df.groupby(level=0).apply(lambda x: x.to_dict('r')).to_dict()
print(my_dict_groupby)
Однако оба my_dict_indx = df.set_index('product_id')['value'].to_dict()
и my_dict_zip = dict(zip(df.product_id, df.value))
дают мне результат ниже, но исключают повторяющиеся product_ids 111 и 121, не возвращают правильный порядок (например, вывод начинается с 161: 2300 вместо 111: 3000):
{161: 2300, 131: 3500, 171: 1300, 141: 1000, 111: 3300, 181: 1500, 151: 2000, 121: 1100, 191: 4500}
С другой стороны, my_dict_groupby = df.groupby(level=0).apply(lambda x: x.to_dict('r')).to_dict()
дает мне правильное количество записей и правильную последовательность ниже, но включает ненужные индексы столбцов, имена столбцов и без векторного представления.
{0: [{'product_id': 111, 'value': 3000}], 1: [{'product_id': 121, 'value': 2500}], 2: [{'product_id': 131, 'value': 3500}], 3: [{'product_id': 141, 'value': 1000}], 4: [{ 'product_id': 111, 'value': 3300}], 5: [{'product_id': 151, 'value': 2000}], 6: [{'product_id': 161, 'value': 2300}], 7: [{'product_id': 171, 'value': 1300}], 8: [{'product_id': 181, 'value': 1500}], 9: [{'product_id': 1 91, 'значение': 4500}], 10: [{'product_id': 121, 'value': 6000}], 11: [{'product_id': 121, 'value': 1100}]}
Как я могу улучшить свое решение, чтобы получить ожидаемый результат в векторной форме [] вместо словарной формы {}. Заранее спасибо.