【发布时间】:2022-01-24 13:28:35
【问题描述】:
背景
我有一个 numpy.ndarray 或 shape==(95,15)。我已经有了想要的Series.Index 名称,len(my_index)==95。我想创建一个Series,其中每个索引都与我的 95x15 numpy.ndarray 的行之一相关联。
变量名
-
pfit: 95x15numpy.ndarray -
my_index: 95x1list(str)
采取的步骤
- 以下失败并出现相应错误:
my_series = pd.Series(index=my_index, dtype="object", data=pfit)
Traceback (most recent call last):
File "C:\Users\gford1\AppData\Local\Temp\1/ipykernel_22244/2329315457.py", line 1, in <module>
my_series = pd.Series(index=my_index, dtype="object", data=pfit)
File "C:\Users\gford1\AppData\Local\Programs\Spyder\pkgs\pandas\core\series.py", line 439, in __init__
data = sanitize_array(data, index, dtype, copy)
File "C:\Users\gford1\AppData\Local\Programs\Spyder\pkgs\pandas\core\construction.py", line 577, in sanitize_array
subarr = _sanitize_ndim(subarr, data, dtype, index, allow_2d=allow_2d)
File "C:\Users\gford1\AppData\Local\Programs\Spyder\pkgs\pandas\core\construction.py", line 628, in _sanitize_ndim
raise ValueError("Data must be 1-dimensional")
ValueError: Data must be 1-dimensional
- 因此,我必须遍历
my_index并逐一添加pfit数组:
my_series = pd.Series(index=my_index, dtype="object")
i = 0
for idx in my_series.index:
my_series[idx] = pfit[i]
i+=1
#2 有效,但我相信有一种更好/更快的方法我不知道。
【问题讨论】:
-
data=list(pfit))有帮助吗? -
我想保留numpy数组
-
我认为你不明白
Series是什么,或者你的迭代做了什么。看my_series.values。这是否“保留”了数组? -
不要争论,但我确实了解系列是什么。我不想将 C 风格的 Numpy 数组不必要地转换为 Python 链表(即
list(pfit)),然后仅在需要时将其作为 Numpy 数组再次检索。 -
在系列中保留二维数组的唯一方法是将其整体放入一个单元格中。您不能一次将一行放入系列中,但仍将其作为二维数组检索。