【发布时间】:2019-11-23 04:59:31
【问题描述】:
我有一个包含 6 列和 450 万行的数据集,我想遍历所有数据集,以比较我的数据集中每一行的最后一列的值和第一列的值并将最后一列值与行的第一列的值匹配的行附加到该行。第一列和最后一列被索引,但没有一个是整数。
我在 stackoverflow 中问了同样的问题,并得到了一个很好的答案,它基于 numpy 和排列数据,但我担心对于相当大的数据集来说它太慢了。
假设这是我的数据集(在真实数据集中,第一个和最后一个元素不是整数):
x = [['2', 'Jack', '8'],['1', 'Ali', '2'],['4' , 'sgee' , '1'],
['5' , 'gabe' , '2'],['100' , 'Jack' , '6'],
['7' , 'Ali' , '2'],['8' , 'nobody' , '20'],['9' , 'Al', '10']]
结果应该是这样的:
[['2', 'Jack', '8', '1', 'Ali', '2', '5' , 'gabe' , '2','7' , 'Ali' , '2'],
['1', 'Ali', '2', '4' , 'sgee' , '1'],
['8' , 'nobody' , '20', '2', 'Jack', '8']]
我认为我可以使用索引来加快处理过程,但我对数据库的了解非常有限。有人有解决方案(使用索引或任何其他工具)吗?
这个问题的 numpy 解决方案如下: How to compare two columns from the same data set?
这里是 sqlite 中真实数据示例的链接:https://drive.google.com/open?id=11w-o4twH-hyRaX8KKvFLL6dQtkTKCJky
【问题讨论】:
-
你的数据是在sql数据库还是python列表中?
-
我有
.csv和.sqlite两种格式 -
那么您应该包括 sqlite 表定义、任何现有索引以及到目前为止您尝试过的查询和代码。
-
请注意,sql 查询不能返回可变数量的列,但是您可以轻松地以一种在 python 中构建任意长度的相关行列表的方式轻松地返回行。
-
为什么你说你有六列,但样本列表似乎有三列?