二维数组到数据框中的两列

Ste*_*uly 6 python initialization dataframe pandas

我得到了变量“v”,它是一个二维数组:

in = v
out = 
array([[ 217.1,  252.5],
   [  73. ,   53. ],
   [  83. ,  827. ],
   ...,
   [ 129. , 1214. ],
   [ 118.6,  908.2],
   [  90. ,   99.5]])
Run Code Online (Sandbox Code Playgroud)

我有一个包含多列的数据框,现在我想将此数组添加到 2 个单独的列中。所以:

x        y
271.1   252.5
Run Code Online (Sandbox Code Playgroud)

等等。

我怎样才能做到这一点?

我试过:

df["Q_pred"],df["r_pred"] = v
Run Code Online (Sandbox Code Playgroud)

但这给出了错误:

ValueError: too many values to unpack (expected 2)
Run Code Online (Sandbox Code Playgroud)

老实说,我不知道该怎么做。

Spg*_*tCd 7

这是一个正确的想法,但您需要转换后的矩阵:

import pandas as pd
import numpy as np

v = np.array([[ 217.1,  252.5],
   [  73. ,   53. ],
   [  83. ,  827. ],
   [ 129. , 1214. ],
   [ 118.6,  908.2],
   [  90. ,   99.5]])

df = pd.DataFrame()

df["Q_pred"], df["r_pred"] = v.T

   Q_pred  r_pred
0   217.1   252.5
1    73.0    53.0
2    83.0   827.0
3   129.0  1214.0
4   118.6   908.2
5    90.0    99.5
Run Code Online (Sandbox Code Playgroud)

这也适用于已经填充的数据框:

df["asdf"],df["qwetz"] = v.T

   Q_pred  r_pred   asdf   qwetz
0   217.1   252.5  217.1   252.5
1    73.0    53.0   73.0    53.0
2    83.0   827.0   83.0   827.0
3   129.0  1214.0  129.0  1214.0
4   118.6   908.2  118.6   908.2
5    90.0    99.5   90.0    99.5
Run Code Online (Sandbox Code Playgroud)

或更短,无需转换,并在一行中:

df = pd.DataFrame(v, columns=['Q_pred', 'r_pred'])

   Q_pred  r_pred
0   217.1   252.5
1    73.0    53.0
2    83.0   827.0
3   129.0  1214.0
4   118.6   908.2
5    90.0    99.5
Run Code Online (Sandbox Code Playgroud)


use*_*203 5

一次向现有 DataFrame 添加多个列很容易。只需使用新列的列表进行分配,然后将numpy数组转换为 DataFrame:

df[['Q_pred', 'r_pred']] = pd.DataFrame(v)
Run Code Online (Sandbox Code Playgroud)

   Q_pred  r_pred
0   217.1   252.5
1    73.0    53.0
2    83.0   827.0
3   129.0  1214.0
4   118.6   908.2
5    90.0    99.5
Run Code Online (Sandbox Code Playgroud)


Ped*_*ges 5

另一种方法是像这样索引列:

df["Q_pred"],df["r_pred"] = v[:,0], v[:,1]
Run Code Online (Sandbox Code Playgroud)