使用多索引值制作词典

2024-10-01 05:02:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下多索引数据帧。你知道吗

Connector Pin Color  Y/N?           
F123      1       R   NaN
          2       O   NaN
          3       Y   NaN
          4      GR   NaN
          5       L   NaN
          6       R   NaN
          7       B   NaN
          8       L   NaN
          9      GR   NaN
          10      O   NaN
C137      1       R   NaN
          2       R   NaN
          3       R   NaN

我正在试着编一本新字典,包括连接器/插针和颜色。所以索引('F123',1)的值等于R,如果这有意义的话。你知道吗

df1d = dict(zip(df1[index], df1['Color']))

是否可以将索引设置为键,并将另一列作为值?上面这一行在语法上是错误的,但这是我试图弄清楚这一点时的想法。你知道吗


Tags: 数据connector字典颜色pinnandictcolor
2条回答

使用两个zipget_level_values

dict(zip(tuple(zip(df.index.get_level_values(0),df.index.get_level_values(1))),df.index.get_level_values(2)))
Out[738]: 
{('C137', 1): 'R',
 ('C137', 2): 'R',
 ('C137', 3): 'R',
 ('F123', 1): 'R',
 ('F123', 2): 'O',
 ('F123', 3): 'Y',
 ('F123', 4): 'GR',
 ('F123', 5): 'L',
 ('F123', 6): 'R',
 ('F123', 7): 'B',
 ('F123', 8): 'L',
 ('F123', 9): 'GR',
 ('F123', 10): 'O'}

或者to_dict如果颜色不在索引中

df.Color.to_dict()
Out[740]: 
{('C137', 1): 'R',
 ('C137', 2): 'R',
 ('C137', 3): 'R',
 ('F123', 1): 'R',
 ('F123', 2): 'O',
 ('F123', 3): 'Y',
 ('F123', 4): 'GR',
 ('F123', 5): 'L',
 ('F123', 6): 'R',
 ('F123', 7): 'B',
 ('F123', 8): 'L',
 ('F123', 9): 'GR',
 ('F123', 10): 'O'}

不清楚Color是否是索引的级别。如果是,可以使用reset_indexMultiIndex提升为序列,然后set_indexto_dict

d = df.reset_index().set_index(['Connector', 'Pin'])['Color'].to_dict()

print(d)

# {('C137', 1): 'R',
#  ('C137', 2): 'R',
#  ...
#  ('F123', 9): 'GR',
#  ('F123', 10): 'O'}

相关问题 更多 >