python - 使用一系列数组的内容扩展数据帧

标签 python pandas numpy

我有一个 pandas DataFrame bb 和一系列 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

我需要向包含 aa 元素的 DataFrame bb 添加三列。想要的结果是这样的:

          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 中是否有更惯用的方法可以更快地完成此操作?

最佳答案

通过构造函数创建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)

关于python - 使用一系列数组的内容扩展数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54171187/

相关文章:

python - 类型错误 : object not callable when making instance

python - 如何根据过滤条件有效地将列变为 0?

python - Flask Babel - 'translations/de/LC_MESSAGES/messages.po' 被标记为模糊,跳过

python - 如果另一列中的值为空,则删除重复项 - Pandas

python - Pandas 在一台计算机上抛出 ParserError 但在另一台计算机上则不会

python-3.x - 如何在 Pandas 数据框上制作矩形矩阵正方形

python - 查找对 numpy 列进行排序的索引返回零

python - select.select 套接字和管道问题

python - 以与使用元组相同的方式使用 ndarray 进行索引

python - 为基于 2D 条件的子集索引大型 3D HDF5 数据集