python对象列表、字典列表转成pandas的DataFrame

  • Post author:
  • Post category:python



目录


一、对象列表转DataFrame


二、字典列表转DataFrame


一、对象列表转DataFrame

# 对象列表
records = session.query(CapacityEnergyWeek).all()
# 取字段名为列名
variables = list(records[0].__dict__.keys())
dataframe = pd.DataFrame([[getattr(i, j) for j in variables] for i in records], columns=variables)
        

from dataclasses import dataclass

import pandas as pd


@dataclass
class Model:
    id: int
    age: int
    country: str


if __name__ == '__main1__':
    # 对象列表
    records = [
        Model(id=1, age=20, country='china'),
        Model(id=2, age=20, country='china'),
        Model(id=3, age=21, country='china'),
        Model(id=4, age=21, country='china'),
        Model(id=5, age=22, country='china'),
    ]

    # 取字段名为列名
    variables = list(records[0].__dict__.keys())
    dataframe = pd.DataFrame([[getattr(i, j) for j in variables] for i in records], columns=variables)
    pass

二、字典列表转DataFrame

import datetime
import time

import numpy as np
import pandas as pd
import matplotlib.pylab as plt
from pandas import DataFrame

if __name__ == '__main__':
    
    data = [
        {'name': 'lily', 'age': 16},
        {'name': 'lucy', 'age': 17},
        {'name': 'anna', 'age': 18},
        {'name': 'line', 'age': 19},
    ]

    variables = list(data[0].keys())
    dataframe = pd.DataFrame([[i[j] for j in variables] for i in data], columns=variables)

import pandas as pd

if __name__ == '__main__':
    # 对象列表
    records = [
        {'id': 1, 'age': 20, 'country': 'china'},
        {'id': 2, 'age': 20, 'country': 'china'},
        {'id': 3, 'age': 20, 'country': 'china'},
        {'id': 4, 'age': 23, 'country': 'china'},
        {'id': 5, 'age': 23, 'country': 'china'},
        {'id': 6, 'age': 23, 'country': 'china'},
        {'id': 7, 'age': 23, 'country': 'china'},
    ]

    # 取字段名为列名
    variables = list(records[0].keys())
    dataframe = pd.DataFrame([[i[j] for j in variables] for i in records], columns=variables)
    pass



版权声明:本文为wenxingchen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。