首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将此字典列表转换为基于字典列表中的键值对的熊猫数据列表。

将此字典列表转换为基于字典列表中的键值对的熊猫数据列表。
EN

Stack Overflow用户
提问于 2022-04-14 07:13:32
回答 1查看 35关注 0票数 1

我在python中有一个字典列表。

代码语言:javascript
复制
l=[
    {
        "TIME": "20220414 12:00:00",
        "Ticker": "AAA",
        "value": "12.0"
    },
    {
        "TIME": "20220414 11:00:00",
        "Ticker": "AAA",
        "value": "13.0"
    },
    {
        "TIME": "20220414 12:00:00",
        "Ticker": "BBB",
        "value": "15.0"
    },
    {
        "TIME": "20220414 11:00:00",
        "Ticker": "BBB",
        "value": "16.0"
    },
    {
        "TIME": "20220414 12:00:00",
        "Ticker": "CCC",
        "value": "17.0"
    },
    {
        "TIME": "20220414 11:00:00",
        "Ticker": "CCC",
        "value": "18.0"
    }   
]

我想把它转换成基于Ticker的熊猫数据列表。

转换后的输出将如下所示;

三个字典的列表将被转换成一个包含3个熊猫数据的列表。

我正在使用python 3.9

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-14 07:16:29

可以将DataFrame构造函数与groupby列表理解结合使用。

代码语言:javascript
复制
out = [d.set_index('Ticker') for _,d in pd.DataFrame(l).groupby('Ticker')]

产出:

代码语言:javascript
复制
[                     TIME value
 Ticker                         
 AAA     20220414 12:00:00  12.0
 AAA     20220414 11:00:00  13.0,
                      TIME value
 Ticker                         
 BBB     20220414 12:00:00  15.0
 BBB     20220414 11:00:00  16.0,
                      TIME value
 Ticker                         
 CCC     20220414 12:00:00  17.0
 CCC     20220414 11:00:00  18.0]

注意:我认为第一本字典中的“名字”应该是"Ticker“(并修正了您问题中的错误)。如果这是真正的数据而不是错误,那么首先需要将“名称”更改为"Ticker“。

代码语言:javascript
复制
out = [d.set_index('Ticker') for _,d in
       pd.DataFrame(l).assign(Ticker=lambda d: d['Ticker'].fillna(d.pop('Name')))]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71867761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档