数据帧的元素作为numpy数组

2024-09-30 03:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试更改数据帧的值,如下所示: df['Tokens'] = tokens 其中tokens是二维np.array。 我希望有一个列,其中每个元素都是一个1-dnp.array,但是发现每个元素只取对应的1-darray的第一个元素。有没有办法在数据帧的元素中存储数组?你知道吗


Tags: 数据元素dfnp数组arraytokens办法
1条回答
网友
1楼 · 发布于 2024-09-30 03:22:46

这就是你想要的吗?你知道吗

In [26]: df = pd.DataFrame(np.random.rand(5,2), columns=list('ab'))

In [27]: df
Out[27]:
          a         b
0  0.513723  0.886019
1  0.197956  0.172094
2  0.131495  0.476552
3  0.678821  0.106523
4  0.440118  0.802589

In [28]: arr = df.values

In [29]: arr
Out[29]:
array([[ 0.51372311,  0.88601887],
       [ 0.19795635,  0.17209383],
       [ 0.13149478,  0.47655197],
       [ 0.67882124,  0.10652332],
       [ 0.44011802,  0.80258924]])

In [30]: df['c'] = arr.tolist()

In [31]: df
Out[31]:
          a         b                                           c
0  0.513723  0.886019    [0.5137231110962795, 0.8860188692834928]
1  0.197956  0.172094  [0.19795634688449892, 0.17209383434042336]
2  0.131495  0.476552  [0.13149477867656167, 0.47655196508193576]
3  0.678821  0.106523   [0.6788212365523125, 0.10652331756477551]
4  0.440118  0.802589   [0.44011802077658635, 0.8025892383754725]

5M排DF的计时:

In [36]: big = pd.concat([df] * 10**6, ignore_index=True)

In [38]: big.shape
Out[38]: (5000000, 2)

In [39]: arr = big.values

In [40]: %timeit arr.tolist()
1 loop, best of 3: 2.27 s per loop

In [41]: %timeit list(arr)
1 loop, best of 3: 3.62 s per loop

相关问题 更多 >

    热门问题