Python-在dataframe列的字符串上调用numpy方法?

Python-在dataframe列的字符串上调用numpy方法?,python,arrays,pandas,numpy,Python,Arrays,Pandas,Numpy,因此,我有一个dataframe列,其中包含一个numpy数组,但它是作为字符串读入的。因此,我最终将以下内容作为一个元素: df['numpy_arr'].iloc[0] = ' 2 3 5 23 5 2 23 ' 我想将其转换为numpy数组,并已使用以下方法成功地对单个实例进行了转换: 但是,当我尝试使用以下公式来概括这一点时: 它返回一个空序列。为什么会这样?是因为lambda中的x实际上并没有引用实际的字符串吗?我还尝试了以下基于: 它再次返回空数组。为什么会这样?如何将其推广到整

因此,我有一个dataframe列,其中包含一个
numpy
数组,但它是作为字符串读入的。因此,我最终将以下内容作为一个元素:

df['numpy_arr'].iloc[0] = ' 2 3 5 23 5  2 23 '
我想将其转换为numpy数组,并已使用以下方法成功地对单个实例进行了转换:

但是,当我尝试使用以下公式来概括这一点时:

它返回一个空序列。为什么会这样?是因为lambda中的
x
实际上并没有引用实际的字符串吗?我还尝试了以下基于:

它再次返回空数组。为什么会这样?如何将其推广到整个系列并将元素转换为numpy数组

[EDIT]作为最后一种手段,我想我可以迭代
.iloc[x]
,但这似乎是一种非常低效的方法,尤其是因为我必须将其转换回一个系列这对我来说很有效:

>>> df = pd.DataFrame({"A": [' 2 3 5 23 5 2 23 ', ' 3 4 5 ']})
>>> df
                   A
0   2 3 5 23 5 2 23
1             3 4 5
>>> df['A'].apply(lambda x: np.fromstring(x, sep = ' '))
0    [2.0, 3.0, 5.0, 23.0, 5.0, 2.0, 23.0]
1                          [3.0, 4.0, 5.0]
Name: A, dtype: object
如果要保存值,请记住将返回值分配给dataframe列:

>>> df['A'] = df['A'].apply(lambda x: np.fromstring(x, sep = ' '))
>>> df
                                       A
0  [2.0, 3.0, 5.0, 23.0, 5.0, 2.0, 23.0]
1                        [3.0, 4.0, 5.0]
>>>

我无法复制。您能提供一个吗?另请注意,
.apply
通常不会比迭代
系列
更快。这基本上就是它在引擎盖下所做的。@juanpa.arrivillaga啊,这太奇怪了,让我来看看我的例子!但是很高兴了解Apply,我认为问题来自进口不良。你的源文件是什么?
[np.fromstring(vector,sep=' ') for vector in df['numpy_arr']]
>>> df = pd.DataFrame({"A": [' 2 3 5 23 5 2 23 ', ' 3 4 5 ']})
>>> df
                   A
0   2 3 5 23 5 2 23
1             3 4 5
>>> df['A'].apply(lambda x: np.fromstring(x, sep = ' '))
0    [2.0, 3.0, 5.0, 23.0, 5.0, 2.0, 23.0]
1                          [3.0, 4.0, 5.0]
Name: A, dtype: object
>>> df['A'] = df['A'].apply(lambda x: np.fromstring(x, sep = ' '))
>>> df
                                       A
0  [2.0, 3.0, 5.0, 23.0, 5.0, 2.0, 23.0]
1                        [3.0, 4.0, 5.0]
>>>