[英]How to assign multiple values to a key using dictionaries?
我有一個 csv 文件,其中包含(視頻游戲的)名稱、平台、流派、出版商等。我正在嘗試創建 3 個單獨的字典。 字典一很容易,因為使用的關鍵是一個獨特的視頻游戲的標題。
對於第二和第三本詞典,我遇到了問題,因為鍵"Genre"
和"Publisher"
不是唯一的。 我試圖讓D2
看起來像:
D2 = { 'Puzzle' : [(tup2),(tup2], 'Another genre': [(tup2)]...}
因為有多個游戲具有相同的類型。
import csv
fp = open("video_game_sales_tiny.csv", 'r')
fp.readline()
reader = csv.reader(fp)
D1 = {}
D2 = {}
D3 = {}
for line in reader:
name = line[0].lower().strip()
platform = line[1].lower().strip()
if line[2] in (None, 'N/A'):
pass
else:
year = int(line[2])
genre = line[3].lower().strip()
publisher = line[4]
na_sales = float(line[5])
europe_sales = float(line[6])*1000000
japan_sales = float(line[7])*1000000
other_sales = float(line[8])*1000000
global_sales = (europe_sales + japan_sales + other_sales)
tup = (name,platform, year,genre, publisher, global_sales)
tup2 = (genre, year, na_sales, europe_sales, japan_sales, other_sales, global_sales)
tup3 = (publisher, name, year, na_sales, europe_sales, japan_sales, other_sales, global_sales)
D1[name] = tup
D2[genre] = tup2
D3[publisher] = tup3
print(D1)
print(D2)
print(D3)
您應該將genre
(例如)條目創建為一個列表,然后將 append 創建到列表中。
if not genre in D2:
D2[genre] = []
D2[genre].append(tup2)
你有非唯一鍵的問題。
如果該問題得到糾正(您需要唯一鍵), merge(
) 方法可以與任何其他方式選項(左、右、內...)一起使用。
Pandas 庫merge()
方法非常強大,可以解決您的問題。
但是,您需要對非唯一鍵問題做一些事情。
我建議使用方法unique()
並為每個DataFrame
創建自己的索引列表。 這只是 ETL 流程中的一層。
假設您有兩個DataFrames
: df_a
和df_b
。 此數據幀共享一個名為u_key
的唯一鍵。
與這些數據框的合並過程將類似於:
import pandas as pd
...
left_merge = pd.merge(df_a, df_b, on=["u_key"], how="left")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.