【问题标题】:Iterating list to create df迭代列表以创建 df
【发布时间】:2021-12-31 04:07:05
【问题描述】:

我有一个来自 GraphQL 中的发布请求 API 的变量 ,如下所示:

  [
    {'duration': 0, 
     'phase': 
        {
            'name': 'Start form'
        }
    }, 
    {'duration': 441, 
     'phase': 
        {
            'name': 'Análise do SAC - Mesas'
        }
    }, 
    {'duration': 126057, 
     'phase': 
        {
            'name': 'Análise do SAC - Industrial'
        }
    }
 ]

如何遍历此列表并创建如下所示的数据框:

Start form Análise do SAC - Mesas Análise do SAC - Industrial
0 441 126057

我需要像这样创建 df,因为我将与另一个 df 合并

另外,我很好奇,这个列表组织需要什么?喜欢列表列表?字典列表?

提前致谢!!

【问题讨论】:

  • “有什么需要”?你的意思是“叫什么名字”?这是一个字典列表。
  • 是的,这就是我的意思,谢谢

标签: python pandas list dataframe


【解决方案1】:

考虑以下代码,它将产生您想要的输出:

import pandas as pd

response =  [
    {'duration': 0, 
     'phase': 
        {
            'name': 'Start form'
        }
    }, 
    {'duration': 441, 
     'phase': 
        {
            'name': 'Análise do SAC - Mesas'
        }
    }, 
    {'duration': 126057, 
     'phase': 
        {
            'name': 'Análise do SAC - Industrial'
        }
    }
 ]
 
data = {}
for obj in response:
    data[obj["phase"]["name"]] = [obj["duration"]]
     
df = pd.DataFrame(data)
print(df.to_string(index=False))

【讨论】:

    【解决方案2】:

    用途:

    df = pd.json_normalize(l)
    df = df.set_index('phase.name').T.reset_index(drop=True)
    

    OUTPUT

    phase.name  Start form  Análise do SAC - Mesas  Análise do SAC - Industrial
    0                    0                     441                       126057
    

    如果要重命名轴,您可以使用:

    df.rename_axis(None, axis=1, inplace=True)
    

    OUTPUT

       Start form  Análise do SAC - Mesas  Análise do SAC - Industrial
    0           0                     441                       126057
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 2018-10-20
      • 2021-01-01
      • 2019-01-05
      • 1970-01-01
      • 2018-05-29
      相关资源
      最近更新 更多