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

时间:2018-11-27 23:09:21

标签: python pandas dataframe initialization

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

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

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

x        y
271.1   252.5

,依此类推。

我该怎么做?

我尝试过:

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

但这会导致错误:

ValueError: too many values to unpack (expected 2)

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

3 个答案:

答案 0 :(得分:2)

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

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

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

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

或更短,无需转换,只需一行:

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

答案 1 :(得分:1)

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

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

   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

答案 2 :(得分:1)

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

df["Q_pred"],df["r_pred"] = v[:,0], v[:,1]