【发布时间】:2021-03-18 13:33:00
【问题描述】:
我有一个DataFrame,看起来像这样
df=
Rank Date Age Name Score
3 9001 23 Lilly 40
2 9002 23 Lilly 45
2 8001 19 Tom 80
3 8010 19 Tom 75
1 4040 28 Cindy 85
3 4041 28 Cindy 50
4 3800 37 Don 35
4 3900 38 Don 38
我要做的是将separate dictionaries 与key 作为"Name" 列和来自"Rank, Date, Age and Score" 列值的value 字段。它应该是这样的
{ 'Lilly': [3,2] }
{ 'Lilly': [9001,9002] }
{ 'Lilly': 23 }
{ 'Lilly': [40,45] }
------
{ 'Don': [35,38] }
我想使用for loop 代替我使用的干代码,其中包含大量重复的代码行
list_1 = df['Rank'].tolist()
list_2 = df['Date'].tolist()
list_3 = df['Age'].tolist()
list_4 = df['Name'].tolist()
list_5 = df['Score'].tolist()
dict_1 = {list_4[i]: list_1[i] for i in range(len(list_1))}
dict_2 = {list_4[i]: list_2[i] for i in range(len(list_1))}
dict_3 = {list_4[i]: list_3[i] for i in range(len(list_1))}
dict_4 = {list_4[i]: list_5[i] for i in range(len(list_1))}
是否可以在 for loop 内创建单独的 numbered dictionaries 而不必编写重复的代码行?
【问题讨论】:
-
简短的回答是否定的。您不能在循环内创建新的变量名。解决这个问题的方法是使用字典来存储字典。
标签: python dataframe dictionary dynamic