Python 如何从数据框中创建词典列表?
我想尝试建立一个包含特定词典的列表。我希望结构类似于以下内容:Python 如何从数据框中创建词典列表?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我想尝试建立一个包含特定词典的列表。我希望结构类似于以下内容: [{'label': 'Abdelnaby, Alaa', 'value': '76001'}, {'label': 'Abdul-Aziz, Zaid', 'value': '76002'}, {'label': 'Abdul-Jabbar, Kareem', 'value': '76003'}] 目前,我从中提取的数据位于一个数据框中。下面的例子 PlayerID Name Current Player Firs
[{'label': 'Abdelnaby, Alaa', 'value': '76001'},
{'label': 'Abdul-Aziz, Zaid', 'value': '76002'},
{'label': 'Abdul-Jabbar, Kareem', 'value': '76003'}]
目前,我从中提取的数据位于一个数据框中。下面的例子
PlayerID Name Current Player First Season Last Season
76001 Abdelnaby, Alaa 0 1990 1994
76002 Abdul-Aziz, Zaid 0 1968 1977
76003 Abdul-Jabbar, Kareem 0 1969 1988
51 Abdul-Rauf, Mahmoud 0 1990 2000
1505 Abdul-Wahad, Tariq 0 1997 2003
请让我知道 如果这足够的话。非常感谢你的帮助 选择您的列,重命名它们,然后使用
orient='records'
调用以获取目录列表
(df.reindex(['Name', 'PlayerID'], axis=1)
.set_axis(['label', 'value'], axis=1, inplace=False)
.to_dict('r'))
# [{'label': 'Abdelnaby, Alaa', 'value': 76001},
# {'label': 'Abdul-Aziz, Zaid', 'value': 76002},
# {'label': 'Abdul-Jabbar, Kareem', 'value': 76003},
# {'label': 'Abdul-Rauf, Mahmoud', 'value': 51},
# {'label': 'Abdul-Wahad, Tariq', 'value': 1505}]
您可以通过将.to_dict('r')
更改为.to_JSON(orient='records')
来输出JSON
如果性能很重要,这里有一个列表理解结构的优化解决方案
[dict(zip(('label', 'value'), r)) for r in df[['Name', 'PlayerID']].values]
# [{'label': 'Abdelnaby, Alaa', 'value': 76001},
# {'label': 'Abdul-Aziz, Zaid', 'value': 76002},
# {'label': 'Abdul-Jabbar, Kareem', 'value': 76003},
# {'label': 'Abdul-Rauf, Mahmoud', 'value': 51},
# {'label': 'Abdul-Wahad, Tariq', 'value': 1505}]
如果速度是个问题,我们可以使用dict comp:
myjson = [{'label': name, 'value': pid} for pid,name in zip(df['PlayerID'], df['Name'])]
给出:
[{'label': 'Abdelnaby, Alaa', 'value': 76001},
{'label': 'Abdul-Aziz, Zaid', 'value': 76002},
{'label': 'Abdul-Jabbar, Kareem', 'value': 76003},
{'label': 'Abdul-Rauf, Mahmoud', 'value': 51},
{'label': 'Abdul-Wahad, Tariq', 'value': 1505}]
此外,如果您希望将数据写入为json:
import json
with open('myjson.json','w') as fo:
json.dump(myjson,fo,indent=4)
速度比较
PlayerID当前球员姓名上赛季第一个赛季
76001 Abdelnaby,阿拉巴马州,1990年至1994年
76002阿卜杜勒·阿齐兹,扎伊德0 1968 1977
76003阿卜杜勒·贾巴尔,卡里姆1969-1988
51阿卜杜勒·劳夫,马哈茂德1990年至2000年
1505 Abdul Wahad,Tariq 0 1997年至2003年
#You already have a data frame
dataframe="your data frame"
#us iloc
values=dataframe.iloc[:,0]# u have all rows n 0th col
label=dataframe.iloc[:,1] #u have all rows n 1st col
dic={}
for i,val in values:
dic[val]=lable[i]
#hope the logic is clear.
相反,如果您想将这些dict列表转换回数据帧,您可以看到如何。只是好奇,为什么要使用.reindex(axis=1),而不仅仅是使用[[]]并选择列?@BenPap method chaining@coldspeed我想在这种情况下,字典理解可能会快一点。
#You already have a data frame
dataframe="your data frame"
#us iloc
values=dataframe.iloc[:,0]# u have all rows n 0th col
label=dataframe.iloc[:,1] #u have all rows n 1st col
dic={}
for i,val in values:
dic[val]=lable[i]
#hope the logic is clear.