将对象列表转换为熊猫数据框

新手上路,请多包涵

如何将对象列表转换为熊猫数据框?

 class Person(object):
    def __init__(self):
        self.name = ""
        self.year = 0
        self.salary = 0

例如下面的工作,但我想有一个人类列表

import pandas as pd
import numpy as np

data = {'name': ['Alice', 'Bob', 'Charles', 'David', 'Eric'],
    'year': [2017, 2017, 2017, 2017, 2017],
    'salary': [40000, 24000, 31000, 20000, 30000]}

df = pd.DataFrame(data, index = ['Acme', 'Acme', 'Bilbao', 'Bilbao', 'Bilbao'])

print(df)

原文由 im281 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 422
2 个回答

ayhan 的建议和您似乎想要的东西的组合——您可以向 Person 类添加一个方法,将其转换为适合 Pandas DataFrame 构造函数的东西。

 class Person(object):
    def __init__(self, name='', year=0, salary=0):
        self.name = name
        self.year = year
        self.salary = salary

    def as_dict(self):
        return {'name': self.name, 'year': self.year, 'salary': self.salary}

person1 = Person('john', 2017, 100)
person2 = Person('smith', 2016, 200)
person3 = Person('roger', 2016, 500)

person_list = [person1, person2, person3]

df = pd.DataFrame([x.as_dict() for x in person_list])

print(df)

    name    salary  year
0   john    100     2017
1   smith   200     2016
2   roger   500     2016

原文由 Ido S 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 vars 从任何列表创建熊猫数据框。

 import pandas as pd

df = pd.DataFrame([vars(d) for d in data])

这是可行的,因为 vars 返回列表中所有对象的所有属性。享受!

原文由 chrischma 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题