我有2个包含两列和大量行的CSV文件。第一列是id,第二列是配对值的集合。 e.g:
CSV1:
1 {[1,2],[1,4],[5,6],[3,1]}
2 {[2,4] ,[6,3], [8,3]}
3 {[3,2], [5,2], [3,5]}
CSV2:
1 {[2,4] ,[6,3], [8,3]}
2 {[3,4] ,[3,3], [2,3]}
3 {[1,4],[5,6],[3,1],[5,5]}
现在我需要获取一个CSV文件,其中包含完全匹配的项目或属于这两个CSV的子集。
这里的结果应该是:
{[2,4] ,[6,3], [8,3]}
{[1,4],[5,6],[3,1]}
任何人都可以建议使用python代码吗?
答案 0 :(得分:0)
根据此answer的建议,您可以使用set.intersection
获取两个集合的交集,但这不适用于列表作为项目。相反,您也可以使用filter
(与this answer相当):
>>> l1 = [[1,2],[1,4],[5,6],[3,1]]
>>> l2 = [[1,4],[5,6],[3,1],[5,5]]
>>> filter(lambda q: q in l2, l1)
[[1, 4], [5, 6], [3, 1]]
在Python 3中,您应该将其转换为list
,因为filter
会返回一个可迭代的内容:
>>> list(filter(lambda x: x in l2,l1))
例如,您可以使用csv.reader
或pandas.read_csv
加载CSV文件(如果它们实际上是逗号[或其他字符]分隔的文件)。