python - 二维数组到数据框中的两列
问题描述
我得到了变量'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)
老实说,我不知道该怎么做。
解决方案
这是一个正确的想法,但您需要转换后的矩阵:
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
推荐阅读
- python - 处理 Altair 等值线图中的缺失值/空值
- powershell - 如何更改包含特定 ConnectionSpecificSuffix 的所有 NICS 的 DNS 服务器?
- c++ - boost::time_facet 不格式化时间
- java - Intellij 无法正确识别 Groovy 测试
- java - 方法在循环中的java中返回2个int值
- firebase - remoteconfig 是否再次获取所有密钥?
- linkedin - 为什么在将照片上传到 LinkedIn API 时收到 CLIENT_ERROR?
- pandas - 在夜间和白天之间选择数据
- node.js - 被 CORS 策略阻止:不存在“Access-Control-Allow-Origin”标头 [Nodejs]
- java - 点后带有自定义数量零的双倍