簡體   English   中英

將新的鍵和值添加到鍵匹配的現有字典中

[英]Add new keys and values to an existing dictionary where the keys are matched

我想計算產品c = 20 $d = 30$的成本。 由於我有meta data和 df 作為單獨的數據框,我需要以某種方式加入它們,然后我可以在字典中為每個單獨的 id 獲取價格和為每個產品購買的商品數量(例如c:5 ),然后計算每個產品的價格(例如產品c 1 * 20

  1. 我的第一個數據框

    Metadata = {'product_name': ["c", "d"], 'product_price': [20, 30]} Metadata = pd.DataFrame(data=Metadata )
  2. 我的第二個數據框

    df = pd.DataFrame({'id':[1,2,3], 'product':[{'c':1}, {'d':3}, {'c':5, 'd':6}]})

Edited

  1. 我的嘗試:所以我認為我需要訪問密鑰,然后將它們用於以后進行匹配。 我首先將Metadata表轉換為字典:
     def get_product_price_dictionary(Metadata): product_info = Metadata product_price_dict = dict() for d in product_info.to_dict('records'): p_name = d["product_name"] p_price = d["product_price"] product_price_dict[p_name] = p_price return product_price_dict test = get_product_price_dictionary(Metadata) test

Output:

{'c': 20, 'd': 30}

然后我在我的數據框中獲取密鑰。

list_keys = []
df_dic = df['product']
for i in range(len(df_dic)):
    if df_dic.iloc[i] is not None:
        each_dic = df_dic.iloc[i]
    for key, value in each_dic.items():
        list_keys.append(key)
list_keys_uique = list(set(list_keys))
list_keys_uique[0:5]

Output

['c', 'd']

我最近開始使用 python 現在,我真的被困在使用字典中了! 在 df 數據框中獲取名為product_cost的列。

現在我不知道如何處理它!

我不會將所有內容都轉為 dict,因為 Pandas 已經非常快了。 您可以使用雙等號和行名在數據庫中搜索某些值:

df[df['row']==key].value

我添加了一小段代碼,它遍歷您的數據庫並計算每筆交易的總金額:

Metadata  = {'product_name': ["c", "d"], 'product_price': [20, 30]}
Metadata = pd.DataFrame(data=Metadata )

df = pd.DataFrame({'id':[1,2,3], 'product':[{'c':1}, {'d':3}, {'c':5, 'd':6}]})

print (Metadata)
print (df)

for action in df['product']:
  print ('action:', action)
  total = 0
  for product in action:
    price = float(Metadata[Metadata['product_name']==product].product_price)
    print ('  product: %s, price: %.2f' % (product, price))
    print ('    count: %i, sum: %.2f' % (action[product], price * action[product]))
    total += price * action[product]
  print ('  total: %.2f' % total)

上述代碼的控制台output:

  product_name  product_price
0            c             20
1            d             30
   id           product
0   1          {'c': 1}
1   2          {'d': 3}
2   3  {'c': 5, 'd': 6}
action: {'c': 1}
  product: c, price: 20.00
    count: 1, sum: 20.00
  total: 20.00
action: {'d': 3}
  product: d, price: 30.00
    count: 3, sum: 90.00
  total: 90.00
action: {'c': 5, 'd': 6}
  product: c, price: 20.00
    count: 5, sum: 100.00
  product: d, price: 30.00
    count: 6, sum: 180.00
  total: 280.00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM