Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将熊猫系列转换为列表系列,或将numpy数组转换为列表数组_Python_Pandas_Numpy - Fatal编程技术网

Python 将熊猫系列转换为列表系列,或将numpy数组转换为列表数组

Python 将熊猫系列转换为列表系列,或将numpy数组转换为列表数组,python,pandas,numpy,Python,Pandas,Numpy,我有一个系列s s = pd.Series([1, 2]) 什么是使s看起来像的有效方法 0 [1] 1 [2] dtype: object 这就是: import numpy as np np.array([[a] for a in s],dtype=object) array([[1], [2]], dtype=object) 如果希望结果仍然是熊猫系列,可以使用以下方法: 调整atomh33ls的答案,以下是一系列列表: output = pd.Serie

我有一个系列
s

s = pd.Series([1, 2])
什么是使
s
看起来像的有效方法

0    [1]
1    [2]
dtype: object
这就是:

import numpy as np

np.array([[a] for a in s],dtype=object)
array([[1],
       [2]], dtype=object)

如果希望结果仍然是熊猫
系列
,可以使用以下方法:


调整atomh33ls的答案,以下是一系列列表:

output = pd.Series([[a] for a in s])
type(output)
>> pandas.core.series.Series
type(output[0])
>> list
选择建议的时间安排:

import numpy as np, pandas as pd
s = pd.Series(np.random.randint(1,10,1000))

>> %timeit pd.Series(np.vstack(s.values).tolist())
100 loops, best of 3: 3.2 ms per loop

>> %timeit pd.Series([[a] for a in s])
1000 loops, best of 3: 393 µs per loop

>> %timeit s.apply(lambda x: [x])
1000 loops, best of 3: 473 µs per loop

这里有一种方法可以提取到数组中,并通过引入一个新的轴来扩展到
2D
-

这里有一个类似的例子,但通过重塑扩展到
2D
-

pd.Series(s.values.reshape(-1,1).tolist())
运行时测试使用-


与我的方法相比要好得多。@Divakar为了完整起见,您可以在
pd.Series(memoryview(s.values.reformate(-1,1)).tolist()中添加一个“approach 3”,因为在
memoryview上构建
Series
应该更快(至少在我当前的配置中是这样)(在较大的示例中可能更为明显)。@mgc是否仅适用于python3?在我使用Python2.7时,我遇到了以下错误:
“NotImplementedError:tolist()仅支持字节视图”
,尝试执行时:
memoryview(s.values.reforme(-1,1)).tolist()
@Divakar你是对的,这只是python 3。我的缺点是,我没有太多地使用python 2.7。我添加了“with My config”(但我应该定义它:python 3.5.2/numpy 1.11.1),因为我不能保证所有版本都是如此(因此最后,对于你的答案来说,它可能不是“方法3”的好选择!)@mgc仍然非常感谢您的反馈,对于使用python3的人也可以尝试一下!
pd.Series(s.values[:,None].tolist())
pd.Series(s.values.reshape(-1,1).tolist())
In [43]: s = pd.Series(np.random.randint(1,10,1000))

In [44]: %timeit pd.Series(np.vstack(s.values).tolist()) # @Nickil Maveli's soln
100 loops, best of 3: 5.77 ms per loop

In [45]: %timeit pd.Series([[a] for a in s]) # @P-robot's soln
1000 loops, best of 3: 412 µs per loop

In [46]: %timeit s.apply(lambda x: [x]) # @mgc's soln
1000 loops, best of 3: 551 µs per loop

In [47]: %timeit pd.Series(s.values[:,None].tolist()) # Approach1
1000 loops, best of 3: 307 µs per loop

In [48]: %timeit pd.Series(s.values.reshape(-1,1).tolist()) # Approach2
1000 loops, best of 3: 306 µs per loop