我得到了变量'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)
老实说,我不知道该怎么做。
答案 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]