首页 > 解决方案 > 如何将形状为 (4,3) 的 ann 数组添加到我的 pandas df?

问题描述

我有这个 df

    col 1   col 2   col 3   col 3
0   323.0   1.0     179.0   420.0
1   131.0   88.0    1.0     917.0
2   872.0   1.0     1.0     811.0
3   1.0     352.0   230.0   769.0

我想用 3 列将我的 np 数组添加到 df

   out_values = [[ 1    1   1]
             [1 1   1]
             [212.2 209.7   212.1]
             [217.1 213.3   219.2]]

期望的输出

    col 1   col 2   col 3   col 3   0        1      2
0   323.0   1.0     179.0   420.0   1.0      1.0    1.0
1   131.0   88.0    1.0     917.0   1.0      1.0    1.0
2   872.0   1.0     1.0     811.0   212.2    209.7  212.1
3   1.0     352.0   230.0   769.0   217.1    213.3  219.2

我目前的代码是

ni_arr = ni_df.to_numpy()
out_values = [np.divide(ni_arr[0][1:], ni_arr[i][1:]) for i in range(ni_len)]
out_values = np.array( out_values )

但是我不确定如何将我的数组添加到 df 中,如我尝试使用的所需输出中所示,for i in range(len(ni_arr[0][1:])):并将其与某些东西结合起来以获取列名(尽管我不确定这是最好的方法) ni_arr[0][1:]返回在这种情况下,列的数量是正确的 3。但我无法将数组添加到 df。

请注意,ni_df 不是用于计算 out_values 的那个,但我认为与我要附加的输出无关。尽管我只是提到以防万一,我有一种更好的方法来执行上述步骤,即将 df 转换为一个数组,然后将第一行除以其他每一行,然后返回一个列表,其中包含每行的列值。我将值列表转换为单个数组。

标签: pandasnumpydataframe

解决方案


你可以检查

 df = df.join(pd.DataFrame(out_values, index=df.index))

推荐阅读