![](/img/trans.png)
[英]append to a key in a dictionary the union of other two keys using python
[英]Python Dictionary Values into Key and Append other keys
我有一個帶有以下內容的python DataFrame:
myDF = pd.DataFrame({"COLUMN_NAME": ["Col1", "Col2", "Col3", "Col4"],
"RULE_1": ["NULL", "DUPLICATE", "TEXT-ONLY", "INTEGER-ONLY"],
"RULE_2": ["DUPLICATE", np.nan, "DUPLICATE", np.nan] })
如何將其轉換為如下所示的字典:
my_dict = {"Col1": ["NULL", "DUPLICATE"], "Col2": ["DUPLICATE"], "Col3": ["TEXT-ONLY", "DUPLICATE"], "Col4": ["INTEGER-ONLY"]}
我被困在做多個循環但沒有真正找到解決方案。
final_rules_dict = defaultdict(list)
for k in rule_dict:
row_dict = rule_dict[k]
for k in row_dict:
col_name = k
if col_name == "COLUMN_NAMES":
final_rules_dict[col_name].append()
這是一個適用於您提供給我們的格式的解決方案
import json
myDF = pd.DataFrame({"COLUMN_NAME": ["Col1", "Col2", "Col3", "Col4"],
"RULE_1": ["NULL", "DUPLICATE", "TEXT-ONLY", "INTEGER-ONLY"],
"RULE_2": ["DUPLICATE", np.nan, "DUPLICATE", np.nan] })
myDF = myDF.T.reset_index(drop=True)
myDF.columns = myDF.iloc[0]
{
col: [x for x in rows if x is not None] for col, rows in json.loads(pd.io.json.dumps(myDF[1:].to_dict(orient='list'))).items()
}
你可以准備你的空字典:
my_dict = {"Col1": [], "Col2": [], "Col3": [], "Col4": []}
基於"COLUMN_NAME"
字段。
然后,您可以遍歷myDF
鍵(忽略 c 的"COLUMN_NAME"
字段),並且對於每個鍵rule_key
,您可以編寫如下所示的內容:
for i, my_dict_key in enumerate(myDF["COLUMN_NAME"]):
my_dict[my_dict_key].append(myDF[rule_key][i])
d = myDF.set_index('COLUMN_NAME').T.to_dict()
我使用您的方法來獲取字典以及更多沒有空值的轉換。
from collections import defaultdict
myDF2 = myDF.T.reset_index(drop=True)
myDF2.columns = myDF2.iloc[0]
myDF3 = myDF2[1:]
dfdict = defaultdict(list)
for (group, col), rule in myDF3.stack().items():
dfdict[col].append(rule)
dfdict
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.