【发布时间】:2019-11-25 14:26:51
【问题描述】:
我希望我的最终数据不包含我想要清理的初始测试数据的元素。在代码中复制和粘贴数据的过程非常繁琐,并且随着添加的条件越来越多变得复杂。
原始值:
(1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 4), (1, 3, 5)
(1, 4, 5), (2, 3, 4), (2, 3, 5), (2, 4, 5), (3, 4, 5)
我想要一个排除 Test.csv
中包含的组合的组合(1,2,3), (2,3,4), (3,4,5),
预期值
(1, 2, 4),
(1, 2, 5),
(1, 3, 4),
(1, 3, 5),
(1, 4, 5),
(2, 3, 5),
(2, 4, 5)
代码尝试 1
a = [1,2,3,4,5]
import csv
with open('Test.csv', newline='') as myFile:
reader = csv.reader(myFile)
list_a = list(reader)
combo_a = [(p,q,r) for p in a for q in a for r in a
if q > p and r > q and r > p
and (p,q,r) not in list_a]
print (combo_a)
代码尝试 2
a = [1,2,3,4,5]
import csv
with open('Test.csv', newline='') as myFile:
reader = csv.reader(myFile)
list_a = list(map(tuple, reader))
combo_a = [(p,q,r) for p in a for q in a for r in a
if q > p and r > q and r > p
and (p,q,r) not in list_a]
print (combo_a)
两个代码都输出不正确的结果
(1, 2, 3),
(1, 2, 4),
(1, 2, 5),
(1, 3, 4),
(1, 3, 5),
(1, 4, 5),
(2, 3, 4),
(2, 3, 5),
(2, 4, 5),
(3, 4, 5),
【问题讨论】:
-
您是否尝试将列表理解展开到常规的for循环中?可能更容易看到问题。
-
你看过
list_a在list(map(tuple, reader))之后是什么吗?我不完全确定它是否为您提供了您正在寻找的东西 -
这是 list_a [('1', '2', '3'), ('2', '3', '4'), ('3', '4 ', '5')]
标签: python python-3.x csv data-cleaning