首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dict to pandas pandas DataFrame字典列表

dict to pandas pandas DataFrame字典列表
EN

Stack Overflow用户
提问于 2021-07-30 17:03:02
回答 2查看 34关注 0票数 0

我想在数据框中转换future_df:

代码语言:javascript
复制
item1 = {'name': 'A', 'parameters': [{'Parameter': 'P1', 'Value': 0.0},{'Parameter': 'P2', 'Value': 0.4}]}
item2 = {'name': 'B', 'parameters': [{'Parameter': 'P1', 'Value': 3},{'Parameter': 'P2', 'Value': 7}]}
future_df = [item1, item2]

我用丑陋的下面几行代码实现了这一点:

代码语言:javascript
复制
df = {}
for item in future_df:
    dic = {key['Parameter']:key['Value'] for key in item['parameters']}
    df[future_df['name']] = dic
    
df = pd.DataFrame(df.values(), index=df.keys())

我知道这是一个非常硬编码的解决方案,必须有一个更干净、更优雅的解决方案。我猜json_normalize函数可能会很有帮助,但我没有找到正确使用它的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-30 17:27:50

从技术上讲,一行代码:

代码语言:javascript
复制
print (pd.DataFrame({i["name"]: {v["Parameter"]: v["Value"] for v in i["parameters"]}
                     for i in future_df}).T)

    P1   P2
A  0.0  0.4
B  3.0  7.0
票数 0
EN

Stack Overflow用户

发布于 2021-07-30 17:27:43

我不知道如果你先写一个函数来扩大它的轴心是否有必要更好:

代码语言:javascript
复制
def ToDF(item):
    x = pd.DataFrame(item['parameters'])
    x.insert(0,"name",item['name'])
    return x.pivot_table(columns="Parameter",values="Value",index="name")

然后像这样拼接:

代码语言:javascript
复制
df = pd.concat([ToDF(i) for i in future_df])
df

Parameter   P1   P2
name               
A          0.0  0.4
B          3.0  7.0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68594655

复制
相关文章

相似问题

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