从另一本词典中的嵌套词典中提取信息

时间:2018-09-01 21:09:30

标签: python pandas dictionary

数据集包含25列500行,其中一列是包含嵌套字典的“ orderItems”,“ orderItems”的所有键都包含1至15个字典。随机取一行,例如:

dataset.orderItems[691581]

结果:

[{'product': 10152, 'price': 78.76, 'quantity': 1.0},
 {'product': 3584, 'price': 20.9, 'quantity': 1.0},
 {'product': 20308, 'price': 9.9, 'quantity': 1.0},
 {'product': 7619, 'price': 13.9, 'quantity': 1.0},
 {'product': 3795, 'price': 15.9, 'quantity': 1.0},
 {'product': 6504, 'price': 18.9, 'quantity': 2.0},
 {'product': 13720, 'price': 75.9, 'quantity': 1.0},
 {'product': 18419, 'price': 31.9, 'quantity': 1.0}]

要创建3列:“产品”,“价格”和“数量”,以使其适合这些列中所有词典的所有信息。上面的示例是从“ orderItems”的单个值中提取的8行。从“ dataset.orderItems [691581]”中提取的价格,产品和数量信息将在这3列中划分为各自的适当列。请记住,有些键有1个字典,其他键有15个(máx)

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

这已返回您的行号的列表。您可以这样处理:

for dict_current in dataset.orderItems[691581]:
    i_prod_num = dict_current["product"]
    i_price = dict_current["price"]
    fl_quantity = dict_current["quantity"]

接下来要做什么取决于您要使用这些值做什么。

答案 1 :(得分:0)

尝试以下操作:

list_df = []
for i, row in enumerate(df.values):
   df_values = df.loc[i,"orderitems"]
   for i, row in enumerate(df_values): 
        list_df.append(pd.DataFrame([row]))
 df_values_final=pd.concat(list_df)