python - 如何从 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'}]

目前,我从中提取的数据位于 pandas 数据框中。下面的示例...

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' 调用 to_dict 以获取字典列表,

(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}]

关于python - 如何从 pandas DataFrame 中创建字典列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55671265/

相关文章:

Python,动态调用脚本

python - 如何查找和打印趋势点变化

python - 如何加密 DRF 中的响应?

python - 我怎样才能只比较数据框的模式?

python - 编辑pip安装的包

python - 如何动态更改下拉值

python - Pandas style.bar 颜色基于条件?

python - 按时间间隔分组并查找具有相似最小值(进入时间值)的唯一 ID

python - 在 Django 序列化程序中,如何根据 View 参数设置外键字段?

python - 在 Python 中使用 WlanScan 强制 wifi 扫描