将数据框中的列追加到字典python

时间:2017-11-16 06:39:46

标签: python dictionary dataframe

我想在我的数据框(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'}

1 个答案:

答案 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