![](/img/trans.png)
[英]how can I create nested dictionary keys and assign them values from a list of namespaced key value pairs?
[英]How can I create a dictionary with 2 keys where the the first key is the index, the second key is from a list and the values from columns of a df?
我有一个数据框(下面的小例子),列 t 和机器 1 - 5。
speed_dict = {'Machine 1': {1: 3, 2: 2, 3: 2, 4: 3, 5: 0, 6: 1, 7: 5, 8: 5, 9: 5, 10: 5},
'Machine 2': {1: 1, 2: 6, 3: 5, 4: 1, 5: 3, 6: 3, 7: 5, 8: 3, 9: 2, 10: 5},
'Machine 3': {1: 1, 2: 5, 3: 0, 4: 4, 5: 2, 6: 6, 7: 2, 8: 2, 9: 2, 10: 5},
'Machine 4': {1: 3, 2: 2, 3: 1, 4: 4, 5: 2, 6: 4, 7: 0, 8: 0, 9: 2, 10: 2},
'Machine 5': {1: 1, 2: 4, 3: 4, 4: 4, 5: 7, 6: 7, 7: 7, 8: 0, 9: 3, 10: 8}}
speed = pd.DataFrame.from_dict(speed_dict)
我想创建一个有 2 个键的字典,一个是时间,另一个是机器,但只有 1 到 4。它应该如下所示:
{(1, 'm1'): 3,
(2, 'm1'): 2,
.
.
.
(9, 'm4'): 2,
(10, 'm4'): 2}
我可以使用字典理解为每台机器创建单独的字典:
# Machines
machines = ['m1', 'm2', 'm3', 'm4']
# Running time
time = speed.index.to_list()
# Speed
# Machine 1
speed_M1 = speed['Machine 1'].to_list()
speed_time_M1 = {time[i]: speed_M1[i] for i in range(len(time))}
但这给出的输出为: {1: 3, 2: 2, 3: 2, 4: 3, 5: 0, 6: 1, 7: 5, 8: 5, 9: 5, 10: 5}
这是关闭但还不完全在那里。
有没有办法做到这一点?
感谢@It_is_Chris 对答案发表评论。
以下工作完美:
speed[speed.columns[:-1]].stack().to_dict()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.