我想将多个词典转换为excel文件的行.我非常接近,但我不知道如何很好地展示它.目前,我有:

import pandas as pd
lst_of_dict = []
test_dict = {'Name':'Tom', 'Age':20, 'favorite_movie_2020':{'Harry Potter':20, 'Fake Movie':20, 'Cinderella':10, 'Hollywood':20}, 'favorite_movie_2021':{'Harry Potter': 21, 'Fake Movie': 20, 'Cinderella': 10, 'Holywood': 20}}
test_dict2 = {'Name':'Oliver', 'Age':40, 'favorite_movie_2020':{'Harry Potter': 30, 'Fake Movie': 50, 'Cinderella': 90, 'Hollywood': 20}}
lst_of_dict.append(test_dict)
lst_of_dict.append(test_dict2)
print(lst_of_dict)

pd.DataFrame(lst_of_dict).to_excel('output2.xlsx')

excel file

你可以看到,对于favorite\u movie,我有一本字典,它不是最容易阅读的,尤其是因为我会有更多年份对的条目来查找最喜欢的电影.我正在考虑对excel表中的第二个表执行我所做的操作,在该表中,我将只旋转该表的右侧,但我根本无法使用字典执行该操作.如果有任何帮助,我将不胜感激!(如果你认为我应该以其他方式显示数据,我洗耳恭听!

推荐答案

您可以定义一个助手函数来展平字典:

def flatten(user):
    favorite_movies = []
    years = []
    for key, value in user.items():
        if isinstance(value, dict):
            favorite_movies.append(pd.Series(value))
            years.append(key[-4:])
    return pd.DataFrame(pd.concat(favorite_movies, axis=1).T).assign(
        Name=user["Name"], Age=user["Age"], Movie_year=years
    )

然后将展开的词典连接到新的数据帧中:

dfs = [flatten(user) for user in [test_dict, test_dict2]]

df = (
    pd.concat(dfs, axis=0)
    .reindex(
        columns=["Name", "Age", "Movie_year"]
        + [col for col in dfs[0].columns if col not in ["Name", "Age", "Movie_year"]]
    )
    .reset_index(drop=True)
)

df.to_excel("output2.xlsx")
print(df)
# Output
     Name  Age Movie_year  Harry Potter  Fake Movie  Cinderella  Hollywood
0     Tom   20       2020            20          20          10         20
1     Tom   20       2021            21          20          10         20
2  Oliver   40       2020            30          50          90         20

Python相关问答推荐

如何获取Django REST框架中序列化器内部的外卡属性?

模型序列化器中未调用现场验证器

如何使用scipy从频谱图中回归多个高斯峰?

numba jitClass,记录类型为字符串

Python json.转储包含一些UTF-8字符的二元组,要么失败,要么转换它们.我希望编码字符按原样保留

Python中的嵌套Ruby哈希

可变参数数量的重载类型(args或kwargs)

大小为M的第N位_计数(或人口计数)的公式

如何获得每个组的时间戳差异?

Django REST Framework:无法正确地将值注释到多对多模型,不断得到错误字段名称字段对模型无效'<><>

Pandas DataFrame中行之间的差异

cv2.matchTemplate函数匹配失败

提取相关行的最快方法—pandas

如何防止Pandas将索引标为周期?

在输入行运行时停止代码

OpenGL仅渲染第二个三角形,第一个三角形不可见

Cython无法识别Numpy类型

查看pandas字符列是否在字符串列中

递归函数修饰器

如何使用matplotlib查看并列直方图