【问题标题】:Convert tuple and nested dictionary to DataFrame将元组和嵌套字典转换为 DataFrame
【发布时间】:2022-01-23 19:16:25
【问题描述】:

我的函数get_context_data(self, **kwargs)中有以下代码:

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['uploaded'] = self.request.session['uploaded']
        context['selection'] = self.request.session['selection']
        dict_comparaison_p1 = dict(enumerate(context['uploaded'].items()))
        list_comparaison_p2 = context['selection']
        dict_comparaison_p2 = {number: dict_comparaison_p1[number] for number in list_comparaison_p2}
        pprint(dict_comparaison_p2)

我的dict_comparaison_p2 有以下输出:

{0: ('Product', {'0': 'Smartwatch', '1': 'Shoes', '2': 'Necklace'}),
 1: (' Weight', {'0': 2, '1': 50, '2': 40}),
 2: (' Price', {'0': 100, '1': 240, '2': 230})}

我想把它转换成这样的 DataFrame:

      Product   Weight   Price
0  Smartwatch        2     100
1       Shoes       50     240
2    Necklace       40     230

但是当我尝试用我的输出转换它时,我得到了以下结果:

                                                   0                           1                               2
0                                            Product                      Weight                           Price
1  {'0': 'Smartwatch', '1': 'Shoes', '2': 'Neckla...  {'0': 2, '1': 50, '2': 40}  {'0': 100, '1': 240, '2': 230}

你能帮我解决这个问题吗?

谢谢!

【问题讨论】:

    标签: python django


    【解决方案1】:

    一种可能的方法:

    import pandas as pd
    
    d = {0: ('Product', {'0': 'Smartwatch', '1': 'Shoes', '2': 'Necklace'}),
         1: (' Weight', {'0': 2, '1': 50, '2': 40}),
         2: (' Price', {'0': 100, '1': 240, '2': 230})}
    
    d_col = {}
    df = pd.DataFrame()
    idx = 0
    for k,v in d.items():
        d_col[k] = v[0]
        df = df.append(pd.DataFrame(data=v[1],index=[idx]))
        idx+=1
    
    df = df.T.rename(columns = d_col)
    print(df)
    

    我分解元组并根据需要处理信息。首先,制作一个名为 d_col 的字典。我将我们想要的数据附加到一个最初为空的 DataFrame 并继续附加。后来,我使用字典 d_col 来根据索引用正确的列名标记 df.T,因为我在循环的前面已经根据 idx 设置了这些索引。

    输出:

          Product  Weight  Price
    0  Smartwatch       2    100
    1       Shoes      50    240
    2    Necklace      40    230
    

    【讨论】:

    • 太棒了!这真的很好。非常感谢您的解释。
    猜你喜欢
    • 2013-12-07
    • 1970-01-01
    • 2013-11-16
    • 2019-04-08
    • 2023-02-10
    • 1970-01-01
    • 2022-06-14
    • 2019-12-28
    相关资源
    最近更新 更多