所以我有一个包含numpy
数组的数据框列,但它作为字符串读入。因此,我最终将以下内容作为单个元素:
df['numpy_arr'].iloc[0] = ' 2 3 5 23 5 2 23 '
我想将它转换为一个 numpy 数组,并且已经成功地使用了单个实例numpy.fromstring
:
first = df['numpy_arr'].iloc[0]
np.fromstring(first, sep=' ')
但是,当我尝试使用以下方法对此进行概括时apply
:
df['numpy_arr'].apply(lambda x: np.fromstring(x, sep=' '))
它返回一个空系列。为什么会这样?是不是因为x
lambda 中的实际上并不是指实际的字符串?基于此,我还尝试了以下操作:
[np.fromstring(vector,sep=' ') for vector in df['numpy_arr']]
这再次返回空数组。为什么会这样?如何将其推广到整个系列并将元素转换为 numpy 数组?
[编辑]作为最后的手段,我想我可以迭代,.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
如果要保存值,请记住将返回值分配给数据框列:
>>> 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]
>>>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句