我有以下数据框 (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': 191, 'value': 4500}], 10: [{'product_id': 121, 'value': 6000}], 11 : [{'product_id': 121, 'value': 1100}]}
我怎样才能增强我的解决方案,以 [] 向量形式而不是 {} 字典形式实现我的预期输出。提前致谢。
慕沐林林
相关分类