我们可以用dataclass
es这样做:
from dataclasses import dataclass
import pandas as pd
@dataclass
class MyDataClass:
i: int
s: str
df = pd.DataFrame([MyDataClass("a", 1), MyDataClass("b", 2)])
字符串
这使得DataFrame
df
具有i
和s
列,正如人们所期望的那样。
有没有一个简单的方法可以用attrs
类来做到这一点?
我可以通过迭代对象的属性并构造一个类似dict[str, list]
(在本例中为{"i": [1, 2], "s": ["a", "b"]}
)的类型的对象并从中构造DataFrame来实现,但直接支持attrs
对象会更好。
1条答案
按热度按时间bqf10yzr1#
你可以像这样访问字典的核心
字符串
这将产生:
型
了解了这一点,如果您有一个
MyDataClass
类型的可迭代arr
,则可以访问__dict__
属性并构造一个嵌套框架型
df输出:
型
这种方法的局限性是,如果使用
slots
选项,则这将不起作用。或者,也可以分别使用
dataclasses.astuple
和dataclasses.asdict
将数据从类转换为元组或字典。Dataframe 也可以使用以下任意一种方式构建:
型