I have a 2D Numpy array that I would like to add to the pandas series (and not to the DataFrame):
>>> import pandas as pd >>> import numpy as np >>> a = np.zeros((5, 2)) >>> a array([[ 0., 0.], [ 0., 0.], [ 0., 0.], [ 0., 0.], [ 0., 0.]])
But this causes an error:
>>> s = pd.Series(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/miniconda/envs/pyspark/lib/python3.4/site-packages/pandas/core/series.py", line 227, in __init__ raise_cast_failure=True) File "/miniconda/envs/pyspark/lib/python3.4/site-packages/pandas/core/series.py", line 2920, in _sanitize_array raise Exception('Data must be 1-dimensional') Exception: Data must be 1-dimensional
This is possible with hacking:
>>> s = pd.Series(map(lambda x:[x], a)).apply(lambda x:x[0]) >>> s 0 [0.0, 0.0] 1 [0.0, 0.0] 2 [0.0, 0.0] 3 [0.0, 0.0] 4 [0.0, 0.0]
Is there a better way?
source share