python - 将每个 x 和 y 分开的点数据集转换为点列表
问题描述
所以我有一个如下所示的数据集:
x0 y0 x1 y1 x2 y2
0 0 5 1 5 1 4
1 1 5 1 4 2 4
2 1 4 2 4 2 3
3 2 4 2 3 3 3
4 2 3 3 3 3 2
我收集到的这个 csv 看起来像这样:
x0 y0 x1 y1 x2 y2 x5 y5
0 0 5 1 5 1 4 3 3
1 1 5 1 4 2 4 3 2
2 1 4 2 4 2 3 4 2
3 2 4 2 3 3 3 4 1
4 2 3 3 3 3 2 5 1
我需要一个列表,将每一行组合成一个单独的子列表,就像这样:
list = [[[0, 5], [1, 5], [1, 4]],
[[1, 5], [1, 4], [2, 4]], ...]
在 StackOverflow 的其余部分,我真的找不到一个简单的方法,我想知道是否有一种简单的方法可以做到这一点。任何帮助表示赞赏!
到目前为止,我所尝试的只是将它转换为一个列表,然后循环遍历它并将每两个项目附加到一个新列表中,如下所示:
path_df = pd.read_csv("data/preprocessed_data.csv", sep="\t", index_col=0)
X_points = path_df[["x0", "y0", "x1", "y1", "x2", "y2"]].values.tolist()
X = []
for x in X_points:
p1 = [x[0], x[1]]
p2 = [x[2], x[3]]
p3 = [x[4], x[5]]
row = [p1, p2, p3]
X.append(row)
print(X[:10])
这确实给了我想要的输出,但感觉不是很pythonic。
解决方案
df.to_numpy().reshape(-1,3,2).tolist()
结果:
[[[0, 5], [1, 5], [1, 4]], [[1, 5], [1, 4], [2, 4]], [[1, 4], [2, 4], [2, 3]], [[2, 4], [2, 3], [3, 3]], [[2, 3], [3, 3], [3, 2]]]
推荐阅读
- python - 获取 FileNotFoundError:尝试读取 csv 文件时
- python - 将python for循环变成一行代码
- android - 尝试解决在 AndroidManifest.xml 中检测到的重复包
- javascript - onClick 按钮功能,用于在复选框上“全选”切换
- java - java中关闭程序后如何存储变量的值
- android - 解析类似于矢量可绘制的路径并创建路径对象以复制相同的android
- apache-camel - Camel 在运行时配置重新交付警察
- javascript - 嘿!我试图让十字准线跟随我的鼠标,但 e.mouseX 和 e.mouseY 不能正常工作
- python - 将多个数据库与单个 Flask Web 服务器一起使用
- html - 无法在Angular的innerHTML中呈现routerLink