【问题标题】:How to resolve Assertion Error for multiple columns in pandas如何解决熊猫中多列的断言错误
【发布时间】:2020-01-07 21:59:31
【问题描述】:

Pandas 文档提供了以下代码,运行良好:

 frame = pd.DataFrame(np.arange(12).reshape((4, 3)),
     index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]],
     columns=[['Ohio', 'Ohio', 'Colorado'],
     ['Green', 'Red', 'Green']])

我尝试了以下代码,基于上述概念,但它不起作用:

hi5 = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9],[10,11,12]], 
    index = [['a','a','a','b'],[1,2,3,1]], 
    columns=[['Ohio', 'Ohio', 'Colorado'], 
    ['Green', 'Red', 'Green']])

上面的代码出现以下错误:

AssertionError: 2 columns passed, passed data had 3 columns

【问题讨论】:

标签: python pandas data-science


【解决方案1】:

我认为它更深入:

以下代码有效:

frame = pd.DataFrame(np.array([[ 0,  1,  2], [ 3,  4,  5], [ 6,  7,  8], [ 9, 10, 11]]),
index=[['a', 'a', 'a', 'b'], [1, 2, 3, 1]],
columns=[['Ohio', 'Ohio', 'Colorado'],
['Green', 'Red', 'Green']])

下面的代码不起作用,唯一的区别是我们现在传递的是列表而不是数组:

frame = pd.DataFrame([[ 0,  1,  2], [ 3,  4,  5], [ 6,  7,  8], [ 9, 10, 11]],
index=[['a', 'a', 'a', 'b'], [1, 2, 3, 1]],
columns=[['Ohio', 'Ohio', 'Colorado'],
['Green', 'Red', 'Green']])

AssertionError: 2 columns passed, passed data had 3 columns

但是,如果我们将此代码拆分为多个步骤,它会再次起作用。

frame = pd.DataFrame([[ 0,  1,  2], [ 3,  4,  5], [ 6,  7,  8], [ 9, 10, 11]])
frame.index=[['a', 'a', 'a', 'b'], [1, 2, 3, 1]]
frame.columns=[['Ohio', 'Ohio', 'Colorado'],
['Green', 'Red', 'Green']]

【讨论】:

    【解决方案2】:

    显然,您需要为此使用 pd.DataFrame.from_records 构造函数

    >>> hi5 = pd.DataFrame.from_records([[1,2,3],[4,5,6],[7,8,9],[10,11,12]],
    ...     index = [['a','a','a','b'],[1,2,3,1]],
    ...     columns=[['Ohio', 'Ohio', 'Colorado'],
    ...     ['Green', 'Red', 'Green']])
    >>>
    >>> hi5
         Ohio     Colorado
        Green Red    Green
    a 1     1   2        3
      2     4   5        6
      3     7   8        9
    b 1    10  11       12
    

    我只能猜测列表列表没有形状属性,因此泛型构造函数不支持这种类型的数据。

    【讨论】:

      猜你喜欢
      • 2015-08-25
      • 2018-08-24
      • 2022-01-25
      • 1970-01-01
      • 2020-07-14
      • 2013-05-03
      • 2020-12-14
      • 1970-01-01
      • 2021-12-19
      相关资源
      最近更新 更多