用数据框中的值填充字典键

Fill dictionary keys with values from data frame

我有一本包含 44 个参与者的字典,然后每个参与者有 16 个指标。目前字典中没有值,一个参与者的 ID 看起来像这样 -

{1010437.0: {'acc_nl_f': (), 'acc_nl_m': (), 'acc_ew_m': (), 'acc_ew_f': (), 'acc_eh_m': (), 'acc_eh_f': (), 'acc_cp_m': (), 'acc_cp_f': (), 'acc_ph_m': (), 'acc_ph_f': (), 'rt_nl_f': (), 'rt_nl_m': (), 'rt_ew_m': (), 'rt_ew_f': (), 'rt_eh_m': (), 'rt_eh_f': (), 'rt_cp_m': (), 'rt_cp_f': (), 'rt_ph_m': (), 'rt_ph_f': ()}

我有一个包含参与者 ID 和 'acc_nl_m' 值的数据框(如下图所示)。我想将这些值放入字典中。

到目前为止,我尝试了以下方法:

for participant in participantDictionary: 
    for row in range(len(df)): 
        if df.participant_private_id[row] == participant: 
            participantDictionary[participant]['acc_nl_m'] = df.response[row]

我的错误只是 "KeyError: 1",当我打印字典时,我确实有键 'acc_nl_m' 的值,但它们都是零。我想我没有正确地将此链接到我想要的值?

任何帮助都会很棒!提前致谢。

这是 pandas 数据框吗?

如果是这样,并且您所有的列也是您在字典中想要的东西,并且假设 participant_private_id 是数据框上的索引,那么这实际上比您的代码简单得多。一行即可完成:

participantDictionary = df.to_dict(orient='index')

The official docs

我注意到根据您的屏幕截图,您的字典键实际上与列名略有不同。我给出的代码将使键成为列名,所以如果你想要你的示例字典中的键,那么你只需要在 to_dict 调用之前重命名列:

df.rename(columns={"accuracy_nl_m": "acc_nl_m", ...}, inplace=True)