我有一个 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)
添加回答
举报
0/150
提交
取消