【问题标题】:Python: How to dynamically get values from dictionary with dynamic key and plot it to DataFrame?Python:如何使用动态键从字典中动态获取值并将其绘制到 DataFrame?
【发布时间】:2020-11-23 03:39:49
【问题描述】:

我想从这些字典中创建一个 DataFrame:

ig_dict = {'Instagram': ([{'photos': 2}], [{'videos': 1}])}
tw_dict = {'Twitter': ([{'photos': 3}], [{'videos': 7}], [{'status': 5}])}
fb_dict = {'Facebook': ([{'photos': 1}], [{'videos': 1}], [{'status': 8}])}

这是我想要的 Dataframe 输出:

Dataframe 1: (from ig_dict)
       Instagram
photos         2      
videos         1
Dataframe 2: (from tw_dict)
       Twitter
photos       3      
videos       7      
status       5
Dataframe 3: (from fb_dict)
       Facebook
photos        1      
videos        1      
status        8

目前,我正在使用.from_dict() 方法:

dataframe_to_plot_ig = pd.DataFrame.from_dict({k: v for k, v in ig_dict.items()}, orient='index')
dataframe_to_plot_tw = pd.DataFrame.from_dict({k: v for k, v in tw_dict.items()}, orient='index')
dataframe_to_plot_fb = pd.DataFrame.from_dict({k: v for k, v in fb_dict.items()}, orient='index')

但相反,我在 DataFrame 列上获得了包含键和值的字典。这是当前的输出:

         Instagram
0  [{'photos': 2}]
1  [{'videos': 1}]
           Twitter
0  [{'photos': 3}]
1  [{'videos': 7}]
2  [{'status': 5}]
          Facebook
0  [{'photos': 1}]
1  [{'videos': 1}]
2  [{'status': 8}]

在这种情况下我可以使用什么样的列表理解?

【问题讨论】:

    标签: python pandas dataframe dictionary


    【解决方案1】:

    你可以用这个。

    import pandas as pd
    
    def generate_dataframe(in_hash,key=None):
        val = []
        col = []
        for tup in in_hash:
            for lst in in_hash[tup]:
                for inner_key in lst:
                    for final_key in inner_key:
                        val += [inner_key[final_key]]
                        col += [final_key]
    
        df = pd.DataFrame(data=[val],index=[key],columns=col)
    
        return df
    
    
    ig_dict = {'Instagram': ([{'photos': 2}], [{'videos': 1}])}
    
    print(generate_dataframe(ig_dict,key='Instagram'))
    
    
    O/P ---->
    
               photos  videos
    Instagram       2       1
    

    您可以使用通用函数根据提供的密钥创建不同的DataFrame。关键是结构应该是一致的

    【讨论】:

    • 今天同事让我改结构.......(参考我上次的编辑),但是你的代码还是可以用的。我可以使用df.T 转置它。
    猜你喜欢
    • 2019-11-21
    • 1970-01-01
    • 2015-03-18
    • 2021-11-09
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多