我想將幾個字典轉換為 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')

你可以看到我有一個關于 favorite_movie 的字典,而且它不是最容易閱讀的,特別是因為我將有更多年對最喜歡的電影的條目。我正在考慮為那個 excel 表中的第二個表做我所擁有的,我將只旋轉那個表的右側,但我根本無法用字典來做到這一點。我將不勝感激任何幫助!(如果您認為我應該以其他方式顯示該資料,我會全力以赴!
uj5u.com熱心網友回復:
您可以定義一個輔助函式來展平字典:
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
uj5u.com熱心網友回復:
您的問題是嵌套字典,我認為您需要的只是將嵌套字典轉換為非嵌套字典的另一個程序。關于這個鏈接,任何新詞典都可以從舊詞典中制作出來。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/486574.html
