1

我有一列包含重复的值,例如

VMS5796,VMS5650,VMS5650,CSL,VMA5216,CSL,VMA5113

我正在使用删除重复项的 jython 应用转换(错误设置为保持原始),这是代码:

return list(set(value.split(",")))

哪个在预览中有效,但未应用于该列。我究竟做错了什么?

4

2 回答 2

1

Map 函数非常强大,在 Python/Jython 中是一个未被充分利用的函数。可能不清楚这段代码在内部做了什么,但它在处理列单元格值中的列表或数组中的数百万位值时非常快,这些值需要“映射”为字符串类型,然后应用连接分隔符,例如逗号 ', '

deduped_list = list(set(value.split(",")))
return ', '.join(map(str, deduped_list))

可能还有其他甚至比这更快的变化,但这应该会让你朝着正确的方向前进。

有趣的是,您还可以获得“可打印表示”repr(object),它可以被 OpenRefine 等 EVAL 接受,并且对于查看您的值的表示也很有用......,我刚刚发现,研究这个答案更深入地为您服务。

deduped_list = list(set(value.split(",")))
return ', '.join(map(repr, deduped_list)) 
于 2013-03-14T22:45:50.073 回答
0

预览隐式地格式化显示的东西。您的表达式返回一个数组(不能存储在单元格中),因此如果您想获得它的字符串形式,请在末尾添加一个 .join(',') 。

于 2013-03-14T22:36:43.413 回答