【发布时间】:2019-12-03 03:48:18
【问题描述】:
使用以下类:
class Test:
a : str
b : str
以及以下数据框:
output = pd.DataFrame(columns=['a', 'b']
如何将 Test 类的数组或列表转换为具有匹配列的 pandas 数据框?
编辑:
让我添加一个更具体的例子:
class Test:
a: int
b: int
def __init__(self, a: int, b: int):
self.a = a
self.b = b
l = [Test(10, 20), Test(50, 60)]
output = pd.DataFrame(l,
columns=['a', 'b'],
index=range(len(l)))
我得到的错误是:
ValueError: 传递值的形状是 (2, 1),索引意味着 (2, 2)
【问题讨论】:
-
您是否对创建 DataFrame 的典型方式有问题?例如
output = pd.DataFrame([test.a, test.b], columns=['a', 'b']),其中test = Test() -
@PyNoob:我举了一个错误的具体例子
-
@tim:这些问题可能是相关的,但它们并不完全相同,因为另一个问题涉及列表的一部分成为标题,这里不是这种情况
-
我不确定您打算做什么,但
Test(10, 20)的计算结果为<__main__.Test at 0x1db821405c0>- 一个元素;所以pd.DataFrame(l)告诉 panda 期望一列和两行,而columns=['a', 'b']意味着两列。因此出现错误。