pandas系列获取'数据必须是1维'错误

时间:2017-04-03 19:18:26

标签: python pandas numpy

我是熊猫和熊猫的新手numpy的。我正在运行一个简单的程序

labels = ['a','b','c','d','e'] 
s = Series(randn(5),index=labels)
print(s)

收到以下错误

    s = Series(randn(5),index=labels)   File "C:\Python27\lib\site-packages\pandas\core\series.py", line 243, in
__init__
    raise_cast_failure=True)   File "C:\Python27\lib\site-packages\pandas\core\series.py", line 2950, in
_sanitize_array
    raise Exception('Data must be 1-dimensional') Exception: Data must be 1-dimensional

知道可能是什么问题吗?我正在尝试使用eclipse,而不是使用ipython笔记本。

2 个答案:

答案 0 :(得分:3)

我怀疑你的进口错误了

如果将其添加到代码中

from pandas import Series
from numpy.random import randn

labels = ['a','b','c','d','e'] 
s = Series(randn(5),index=labels)
print(s)

a    0.895322
b    0.949709
c   -0.502680
d   -0.511937
e   -1.550810
dtype: float64

运行良好。

那就是说,正如@jezrael所指出的那样,导入模块而不是污染命名空间是更好的做法。

您的代码应该是这样的。

解决方案

import pandas as pd
import numpy as np

labels = ['a','b','c','d','e'] 
s = pd.Series(np.random.randn(5),index=labels)
print(s)

答案 1 :(得分:2)

对于随机floats,随机integersnumpy.random.rand似乎需要numpy.random.randint

import pandas as pd
import numpy as np

np.random.seed(100)
labels = ['a','b','c','d','e'] 
s = pd.Series(np.random.randn(5),index=labels)
print(s)
a   -1.749765
b    0.342680
c    1.153036
d   -0.252436
e    0.981321
dtype: float64
np.random.seed(100)
labels = ['a','b','c','d','e'] 
s = pd.Series(np.random.randint(10, size=5),index=labels)
print(s)
a    8
b    8
c    3
d    7
e    7
dtype: int32