Pandas Pivot错误“异常:数据必须为一维”

时间:2019-01-14 17:11:48

标签: python pandas pivot

我正在使用Pycharm(版本2018.2.4),并在其上运行Python 3.6.7。

我目前尝试使用pandas枢纽功能,但甚至使用示例代码:

import pandas as pd
df = pd.DataFrame({'foo':['one', 'one', 'one', 'two', 'two','two'],'bar': 
  ['A', 'B', 'C', 'A', 'B', 'C'],'baz': [1, 2, 3, 4, 5, 6],'zoo': ['x', 
   'y', 'z', 'q', 'w', 't']})
df.pivot(index='foo', columns='bar', values=['baz', 'zoo'])

导致错误: 例外:数据必须是一维的

只有当我将一列列传递给values参数时,这种情况才会出现,但是此示例直接来自函数帮助: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.pivot.html

过去曾经为我工作,但本周已停止工作,不知道为什么。我的熊猫版本是0.23.4,numpy版本是1.15.4。

有人知道是什么导致此问题/如何解决吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

在jupyter笔记本中进行测试时,我能够重新创建相同的错误, 熊猫:0.22.0和numpy:1.14.0。

我无法弄清楚为什么会发生此问题,但我将示例中的代码重写为

public void read() {

    try {
        ArrayList<Integer> itemArr = new ArrayList<Integer>();
        ArrayList<String> descArr = new ArrayList<String>();
        FileReader file = new FileReader("C:\\Users\\me\\Desktop\\places.dat");
        BufferedReader r = new BufferedReader(file);
        int r1;

        while ((r.readLine()) != null) {
            while ((r1 = r.read()) != -1) {
                char ch = (char) r1;
                if (Character.isDigit(ch)) {
                    itemArr.add(r.read());
                }
            }
        }

    } catch (IOException e) {

    }
}

并获得了预期的输出(如pandas doc所示)

希望这会有所帮助!

答案 1 :(得分:1)

以下对我有用。试试看!

import pandas as pd
df = pd.DataFrame({'foo':['one', 'one', 'one', 'two', 'two','two'],'bar': 
  ['A', 'B', 'C', 'A', 'B', 'C'],'baz': [1, 2, 3, 4, 5, 6],'zoo': ['x', 
   'y', 'z', 'q', 'w', 't']})
df.pivot(index='foo', columns='bar')[['baz', 'zoo']]

答案 2 :(得分:0)

如果将其制成字典,则可以正常使用。试试吧!

df = pd.DataFrame({'foo':['one', 'one', 'one', 'two', 'two','two'],'bar': 
  ['A', 'B', 'C', 'A', 'B', 'C'],'baz': [1, 2, 3, 4, 5, 6],'zoo': ['x', 
   'y', 'z', 'q', 'w', 't']})
df.pivot(index='foo', columns='bar', values=['baz', 'zoo'])

#output:

    baz zoo
bar A   B   C   A   B   C
foo                     
one 1   2   3   x   y   z
two 4   5   6   q   w   t