Pandas set_index与to_dict的交互,并将列组合为一个值列表



我做了。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方法,我建议您采用以下方法。

  1. 最好总是检查这些方法的文档。如果您查看to_dict方法文档,您将发现有一个orient参数被设置为"dict";默认设置,但也可以使用其他选项。

  2. 在您的情况下,最合适的解决方案是使用"split"类型,它将返回三个键的字典:index(索引列表)(列列表),data(数据列表).
  3. 那么您可以:

  • 可以使用这种字典
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]

注意:当然,还有其他方法可以做到这一点,但由于您没有提供任何数据,因此不完全清楚这是否是您想要的。更新你的问题或评论这个答案,使它更好。

相关内容

  • 没有找到相关文章

最新更新