【问题标题】:pandas tranform list of custom object to dataframe熊猫将自定义对象列表转换为数据框
【发布时间】:2021-05-02 12:46:10
【问题描述】:

我有对象列表。 每个对象都来自具有以下属性的 Student 类:name、id、grades。 Grades 是一个带有字符串键('math'、'cs'、..)的字典。 我想转换这个熊猫数据框列表:

df = name id math cs
      a    2  90  92
      b    5  82  96

最好的方法是什么?

【问题讨论】:

    标签: python pandas dataframe data-science


    【解决方案1】:

    让我们尝试遍历students 列表并通过检索所需属性为每个Student 对象创建一条记录,然后您可以从这些记录中构造一个新的数据框

    df = pd.DataFrame([{'name': s.name, 'id': s.id, **s.grades} for s in students])
    

    如果您有可变数量的实例属性,并且始终存在一个名为 grades 的属性,其中包含存储在字典中的学生标记

    df = pd.DataFrame(map(vars, students))
    df = df.join(pd.DataFrame([*df.pop('grades')]))
    

      name  id  math  cs
    0    a   2    90  92
    1    b   5    82  96
    

    【讨论】:

    • 有没有办法在不显式写入每个属性的情况下做到这一点?以防将来有更多
    • @okuoub 这取决于 Student 类包含的属性类型。你能分享Student类的定义(__init__ section)吗?
    • def init__(self, sid, name, l): self.id = sid #int self.name = name #string self.l = l #list 字典不属于__init,稍后添加
    猜你喜欢
    • 2019-10-12
    • 2017-08-26
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2018-08-25
    • 1970-01-01
    相关资源
    最近更新 更多