我想在我的数据框(EisDat_cvs)中设置两列作为python中的字典键和值,使用此代码一切正常:
dict_EisukeID_HMDB = EisDat_cvs.set_index('Unnamed: 28')['Unnamed: 26'].to_dict()
但是现在我想在字典中附加两列作为值,一列作为键,我尝试将前一列修改为:
dict_EisukeID_HMDB = EisDat_cvs.set_index('Unnamed: 28')['Unnamed: 26', 'Unnamed: 1'].to_dict()
但是python引发了一个关键错误......
修改
我有一个数据框EisDat_cvs,其中我正在考虑3列(未命名:28,未命名:26,未命名:1)。我想得到一个字典,它将第28列中的值作为我的键,将第26列和第1列中的值作为字典中的值。像这样:
Unnamed: 28, Unnamed: 26, Unnamed: 1
bla. 1 90
cra 2 12
ta 3 12
我的输出应该是
dict_EisukeID_HMDB = { 'bla': '1', '90'
'cra': '2', '12'
'ta': '3', '12'}
答案 0 :(得分:1)
你可以试试这个:
dict(zip(
EisDat_cvs['Unnamed: 28'],
zip(EisDat_cvs['Unnamed: 26'], EisDat_cvs['Unnamed: 1'])
))
您遇到的问题不是to_dict()
,而是将列作为元组传递,您尝试通过hierarchal column structure访问数据框,如果您的数据框没有,则会抛出KeyError
。
分层列示例:
df = pd.DataFrame({
("A", "A0"): [10, 30, 50, 70],
("A", "A1"): [11, 31, 51, 71],
("B", "B0"): [20, 40, 60, 80],
("B", "B1"): [21, 41, 61, 81]
})
print(df["A", "A0"])
输出:
0 10
1 30
2 50
3 70
Name: (A, A0), dtype: int64