我做了。set_index,并在转换为字典时列出我想要作为键的所有列的名称。
dict = df.set_index(['num1','num2','num3']).to_dict()
,它输出一个包含我想要的键的字典。但是,我希望未命名的列是一个值列表,但它只显示一个列值。
{('one','two','three') : 8, ('four','seven','three') : 10 ... }
是输出,但是我希望它看起来像这样:
{('one','two','three') : [8,6,10], ('four','seven','three'): [10,2,4]
我如何得到to_dict输出所有列作为每个键值的列表?
首先,获得样本数据(您问题中df
的含量)将非常有帮助。如果您坚持使用to_dict
方法,我建议您采用以下方法。
-
最好总是检查这些方法的文档。如果您查看to_dict方法文档,您将发现有一个
orient
参数被设置为"dict";默认设置,但也可以使用其他选项。 在您的情况下,最合适的解决方案是使用 那么您可以:
"split"
类型,它将返回三个键的字典:index(索引列表)列(列列表),data(数据列表).
- 可以使用这种字典
df_dict = df.set_index(['num1','num2','num3']).to_dict(orient='split')
idx = df_dict['index'].index(('one','two','three'))
val = df_dict['data'][idx]
# val = [8, 6, 10]
- 或者您可以将其合并到新字典
df_dict = df.set_index(['num1','num2','num3']).to_dict(orient='split')
df_dict = dict(zip(a["index"], a["data"])) # note that I'm renamed your variable to 'df_dict', because 'dict' is builtin method for creation dictionaries
val = df_dict[('one','two','three')]
# val = [8, 6, 10]
注意:当然,还有其他方法可以做到这一点,但由于您没有提供任何数据,因此不完全清楚这是否是您想要的。更新你的问题或评论这个答案,使它更好。