使用一系列数组的内容扩展数据框

我有一个 Pandas DataFramebb和一个Pandas系列的 numpy 数组,aa行数相同。


>>> bb

          A         B

0  0.049315  0.362793

1  0.853909  0.590942

2  0.854748  0.247608

3  0.084967  0.293541

4  0.053430  0.922705

5  0.571357  0.404485

6  0.363018  0.070912

7  0.784807  0.641253


>>> aa


0    [0.4648, 0.8575, 0.5008]

1    [0.3056, 0.2737, 0.0137]

2     [0.8038, 0.0858, 0.345]

3    [0.4135, 0.7571, 0.3686]

4    [0.7482, 0.8063, 0.7976]

5    [0.9359, 0.5873, 0.2319]

6     [0.8838, 0.7109, 0.712]

7    [0.6493, 0.1516, 0.5401]

dtype: object

我需要将三列添加到bb包含aa. 想要的结果是这样的:


          A         B      v0      v1      v2

0  0.049315  0.362793  0.4648  0.8575  0.5008

1  0.853909  0.590942  0.3056  0.2737  0.0137

2  0.854748  0.247608  0.8038  0.0858  0.3450

3  0.084967  0.293541  0.4135  0.7571  0.3686

4  0.053430  0.922705  0.7482  0.8063  0.7976

5  0.571357  0.404485  0.9359  0.5873  0.2319

6  0.363018  0.070912  0.8838  0.7109  0.7120

7  0.784807  0.641253  0.6493  0.1516  0.5401

我可以通过以下代码实现这一点:


rows, cols = 8, 3


ixs = ["v" + str(i) for i in range(cols)]

bb[ixs] = pd.DataFrame(np.zeros((8, 3)))

for i in range(rows):

    for j in range(cols):

        bb[ixs[j]][i] = aa[i][j]

但是,这在我拥有的较大的 DataFrame 上非常慢。在 Pandas/numpy 中是否有更惯用的方法可以更快地执行此操作?


繁花如伊
浏览 182回答 1
1回答

白板的微信

DataFrame通过构造函数创建,add_prefix通过join或更改列名并添加到原始concat:df = bb.join(pd.DataFrame(aa.values.tolist()).add_prefix('v'))或者:df = pd.concat([bb, pd.DataFrame(aa.values.tolist()).add_prefix('v')], axis=1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python