如何将df转换为python中由索引值组成的列表字典

如何将df转换为python中由索引值组成的列表字典,python,pandas,Python,Pandas,我有下面的df按周对玩家进行排名(由每个列表示) 例如,Bob在第一周排名第一,在第二周排名第三,等等。。。我想将此df转化为一个字典,其中包含每个玩家的数字等级列表(即每周的索引值),如下所示: {'Bob': [1, 3, 3, 2], 'Jim': [3, 1, 2, 4], 'Pam': [4, 4, 1, 1], 'Amy': [2, 2, 4, 3]} 我知道我可以使用索引来获取每个团队每周的索引,但首先我需要 移动索引,使其从

我有下面的
df
按周对玩家进行排名(由每个列表示)

例如,
Bob
在第一周排名第一,在第二周排名第三,等等。。。我想将此
df
转化为一个字典,其中包含每个玩家的数字等级列表(即每周的索引值),如下所示:

{'Bob': [1,
  3,
  3,
  2],
 'Jim': [3,
  1,
  2,
  4],
 'Pam': [4,
  4,
  1,
  1],
 'Amy': [2,
  2,
  4,
  3]}
我知道我可以使用
索引
来获取每个团队每周的索引,但首先我需要

  • 移动索引,使其从1开始(我可以使用
    df.index+=1
  • 为每个团队制作一个密钥,值对是他们的等级列表

  • 我对第二部分感到非常困惑,但必须有一个非常简单的解决方案,我没有找到。任何帮助都将不胜感激。谢谢

    首先使用
    .unstack.reset\u index(-1)
    将所有列合并到一列中。然后使用包含玩家姓名的列
    groupby
    ,然后使用aggregate with list函数

    使用:

    输出:

    >>> out
    {'Amy': [2, 2, 4, 3], 'Bob': [1, 3, 3, 2],
    'Jim': [3, 1, 2, 4], 'Pam': [4, 4, 1, 1]}
    
    {'Amy': [2, 2, 4, 3],
     'Bob': [1, 3, 3, 2],
     'Jim': [3, 1, 2, 4],
     'Pam': [4, 4, 1, 1]}
    

    我们可以使用
    T
    stack
    进行转置,以获得列中的排名作为索引,然后交换新数据帧中的索引和值,
    groupby
    apply(list)
    以获得每个人的所有排名作为列表,最后使用
    转换为dictionary to_dict

    s = df.T.stack().droplevel(0)
    pd.DataFrame(
        s.index + 1,
        index=s.values).groupby(level=0)[0].apply(list).to_dict()
    
    输出:

    >>> out
    {'Amy': [2, 2, 4, 3], 'Bob': [1, 3, 3, 2],
    'Jim': [3, 1, 2, 4], 'Pam': [4, 4, 1, 1]}
    
    {'Amy': [2, 2, 4, 3],
     'Bob': [1, 3, 3, 2],
     'Jim': [3, 1, 2, 4],
     'Pam': [4, 4, 1, 1]}
    

    这可能有用。请从下一页重复和。“演示如何解决此编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后就您的算法或技术提出具体问题。堆栈溢出不是用来取代现有的文档和教程。另请参阅上的堆栈溢出指南。简单地把你的作业扔到这里是不可接受的,而且很可能违反了你学校的学术诚信政策。这是一个个人项目,我真的尝试了一个小时。我被困住了,我想我应该寻求帮助@如果我编辑了这个问题并包含了我试图解决这个问题的代码,这会有帮助吗?就像我说的,我真的尝试过这个,但我被卡住了,这就是我认为这个网站的目的@修剪
    {'Amy': [2, 2, 4, 3],
     'Bob': [1, 3, 3, 2],
     'Jim': [3, 1, 2, 4],
     'Pam': [4, 4, 1, 1]}