为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花如伊 2021-10-10 16:13:35
我有一个 Pandas DataFramebb和一个Pandas系列的 numpy 数组,aa行数相同。>>> bb          A         B0  0.049315  0.3627931  0.853909  0.5909422  0.854748  0.2476083  0.084967  0.2935414  0.053430  0.9227055  0.571357  0.4044856  0.363018  0.0709127  0.784807  0.641253>>> aa0    [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      v20  0.049315  0.362793  0.4648  0.8575  0.50081  0.853909  0.590942  0.3056  0.2737  0.01372  0.854748  0.247608  0.8038  0.0858  0.34503  0.084967  0.293541  0.4135  0.7571  0.36864  0.053430  0.922705  0.7482  0.8063  0.79765  0.571357  0.404485  0.9359  0.5873  0.23196  0.363018  0.070912  0.8838  0.7109  0.71207  0.784807  0.641253  0.6493  0.1516  0.5401我可以通过以下代码实现这一点:rows, cols = 8, 3ixs = ["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 中是否有更惯用的方法可以更快地执行此操作?
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

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)


查看完整回答
反对 回复 2021-10-10
  • 1 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号