如何将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]}