首页 > 解决方案 > 二维数组到数据框中的两列

问题描述

我得到了变量'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)

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

标签: pythonpandasdataframeinitialization

解决方案


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

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

推荐阅读