Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从数据框中创建词典列表?_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

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.