[英]Pandas dataframes in a dictionary itself in a dictionary
我有一个大数据框,这是一个摘录:
指数 | 协议 ID | 活动编号 | 细节 1 | 细节 2 |
---|---|---|---|---|
0 | 1509 | 15 | 一个 | s |
1 | 636 | 159 | b | 吨 |
2 | 787 | 159 | C | 你 |
3 | 796 | 159 | d | v |
4 | 1174 | 159 | e | w |
5 | 787 | 252 | F | X |
6 | 1029 | 252 | G | 是的 |
7 | 1188 | 钠 | H | z |
8 | 1848年 | 钠 | 一世 | 一个 |
9 | 待定 | 钠 | j | b |
10 | 待定 | 钠 | ķ | C |
11 | 1029 | 253 | l | d |
12 | 1170 | 253 | 米 | e |
13 | 1468 | 钠 | n | F |
14 | 957 | 钠 | ○ | G |
15 | 1029 | 254 | p | H |
16 | 957 | 254 | q | 一世 |
17 | 841 | 166 | r | j |
我需要创建一个由 Activity ID 命名的字典。 在每个“活动字典”中,我需要由协议 ID 命名的所有数据帧,并且在每个协议数据帧中,我需要来自所有初始列的完整信息。
所以,活动字典 → 在每一个中,它们的协议字典 → 在每一个中,与协议相关的所有信息的数据框
当我编码时
activity_dict = initial_dataframe.set_index('Activity ID').T.to_dict('dict')
它确实为我创建了一个由活动 ID 命名的字典,但是当我单击一个活动时,它只显示最后一个协议和链接到它的信息。 因为这基本上是在做我需要的最后一步,所以我试图添加中间步骤,即当我单击活动字典或运行时应该出现的协议数据帧,例如:
activity_dict["159"]
现在正在向我展示
{'Protocol ID': '1174',
'Protocol Name': 'My analyses',
'I/O': 'O',
'Prot Owner': 'lorem.ipsum',
'Notes': 'Done',
'Activity Name': 'Test',
'Comments': nan,
'Activity Owner': nan,
'Protocol description': nan,
'Fonte': nan}
当我想让它向我显示一个链接到不仅链接到协议 1174,还链接到 636 和 787 的数据帧时。
有人知道怎么做这个吗?
先感谢您
因为字典具有唯一键,一种可能的解决方案是为所有值创建列表:
activity_dict = initial_dataframe.groupby('Activity ID').agg(list).to_dict('index')
print (activity_dict)
{'15': {'Protocol ID': ['1509'], 'Detail 1': ['a'], 'Detail 2': ['s']},
'159': {'Protocol ID': ['636', '787', '796', '1174'], 'Detail 1': ['b', 'c', 'd', 'e'], 'Detail 2': ['t', 'u', 'v', 'w']},
'166': {'Protocol ID': ['841'], 'Detail 1': ['r'], 'Detail 2': ['j']},
'252': {'Protocol ID': ['787', '1029'], 'Detail 1': ['f', 'g'], 'Detail 2': ['x', 'y']},
'253': {'Protocol ID': ['1029', '1170'], 'Detail 1': ['l', 'm'], 'Detail 2': ['d', 'e']},
'254': {'Protocol ID': ['1029', '957'], 'Detail 1': ['p', 'q'], 'Detail 2': ['h', 'i']}}
或使用加入:
activity_dict = initial_dataframe.groupby('Activity ID').agg(','.join).to_dict('index')
print (activity_dict)
{'15': {'Protocol ID': '1509', 'Detail 1': 'a', 'Detail 2': 's'},
'159': {'Protocol ID': '636,787,796,1174', 'Detail 1': 'b,c,d,e', 'Detail 2': 't,u,v,w'},
'166': {'Protocol ID': '841', 'Detail 1': 'r', 'Detail 2': 'j'},
'252': {'Protocol ID': '787,1029', 'Detail 1': 'f,g', 'Detail 2': 'x,y'},
'253': {'Protocol ID': '1029,1170', 'Detail 1': 'l,m', 'Detail 2': 'd,e'},
'254': {'Protocol ID': '1029,957', 'Detail 1': 'p,q', 'Detail 2': 'h,i'}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.