有没有办法将两个键组合成一个键?蟒蛇

时间:2019-01-15 18:33:51

标签: python pandas dictionary key

我有键NameIdMajor。有没有一种方法可以使NameId的值成为键,而Major是字典中的值?

Name     Id       Major
Joe      001      Math
Kyle     002      Coms
Lisa     003      Engr
Mia      004      Art
Nick     005      Engr
Olga     006      Math

{'Joe 001': Math, 'Kyle 002': Coms, 'Lisa 003': Engr, etc.}

我正在尝试从excel文件中执行此操作,因此我不想手动输入我正在使用的所有名称。有没有组合键的方法?

您能帮我或与我联系吗?

3 个答案:

答案 0 :(得分:2)

您可以通过列表理解来创建所需列表:

d2=[
{'Name': 'Joe', 'Id': '001',  'Major': 'Math'},
{'Name': 'Kyle', 'Id': '002',  'Major': 'Coms'}
]
d3={x['Name']+" "+x['Id'] : x['Major'] for x in d2}

print (d3)

#{'Joe 001': 'Math', 'Kyle 002': 'Coms'}

答案 1 :(得分:1)

如roganjosh用户所述,最好的方法是创建元组键。

这是通过遍历行并以此添加到字典来完成的。

my_dict = {}
for row in rows:
    my_dict[(row.Name, row.Id)] = row.Major

请勿只是将它们附加为字符串。由于名称和ID彼此唯一,因此无法保证它们的串联也唯一。例如连接时,名称:joe0 Id:01和名称:joe Id:001相同。将它们保存为元组是安全的。

答案 2 :(得分:1)

假设数据位于pandas.Dataframe中,则可以更改数据并使用pandas.DataFrame.to_dict。例如:

df['Key']=df['Name']+df['Id'] #combine the two columns you want to make keys
df=df.drop(['Name','Id'],axis=1).set_index('Key').T.to_dict('list')

将两列合并后,我将Key设置为索引,然后转置。这将摆脱索引中的列名。然后将其转换为字典。