我的数据如下:
Application WorkflowStep
0 WF:ACAA-CR (auto) Manager
1 WF:ACAA-CR (auto) Access Responsible
2 WF:ACAA-CR (auto) Automatic
3 WF:ACAA-CR-AccResp (auto) Manager
4 WF:ACAA-CR-AccResp (auto) Access Responsible
5 WF:ACAA-CR-AccResp (auto) Automatic
6 WF:ACAA-CR-IT-AccResp[AUTO] Group
7 WF:ACAA-CR-IT-AccResp[AUTO] Access Responsible
8 WF:ACAA-CR-IT-AccResp[AUTO] Automatic
除了这两列之外,我还想添加第三列,显示所有WorkflowStep
的总和。
字典应如下所示(或类似):
{'WF:ACAA-CR (auto)':
[{'Workflow': ['Manager', 'Access Responsible','Automatic'], 'Summary': 3}],
'WF:ACAA-CR-AccResp (auto)':
[{'Workflow': ['Manager','Access Responsible','Automatic'], 'Summary': 3}],
'WF:ACAA-CR-IT-AccResp[AUTO]':
[{'Workflow': ['Group','Access Responsible','Automatic'], 'Summary': 3}]
}
我用上面两列创建字典的代码可以很好地工作。你知道吗
for i in range(len(df)):
currentid = df.iloc[i,0]
currentvalue = df.iloc[i,1]
dict.setdefault(currentid, [])
dict[currentid].append(currentvalue)
创建WorkflowStep
之和的代码如下所示,也可以正常工作:
for key, values in dict.items():
val = values
match = ["Manager", "Access Responsible", "Automatic", "Group"]
c = Counter(val)
sumofvalues = 0
for m in match:
if c[m] == 1:
sumofvalues += 1
我最初的想法是调整我的第一个代码,其中初始键是Application
,WorkflowStep
,Summary
将是子字典。你知道吗
for i in range(len(df)):
currentid = df.iloc[i,0]
currentvalue = df.iloc[i,1]
dict.setdefault(currentid, [])
dict[currentid].append({"Workflow": [currentvalue], "Summary": []})
但是,这样做的结果并不令人满意,因为它没有将currentvalue
添加到已经存在的Workflow
键,而是在每次迭代之后重新创建它们。你知道吗
示例
{'WF:ACAA-CR (auto)': [{'Workflow': ['Manager'], 'Summary': []},
{'Workflow': ['Access Responsible'], 'Summary': []},
{'Workflow': ['Automatic'], 'Summary': []}]
}
如何创建一个类似于我上面所写内容的词典?
IIUC,这是能帮到你的-
导致
我认为meW的答案是一种更好的做事方式,并利用了dataframe的简洁功能,但作为参考,如果您想以您尝试的方式来做,我认为这会起作用:
输出:
相关问题 更多 >
编程相关推荐