我有一列包含重复的值,例如
VMS5796,VMS5650,VMS5650,CSL,VMA5216,CSL,VMA5113
我正在使用删除重复项的 jython 应用转换(错误设置为保持原始),这是代码:
return list(set(value.split(",")))
哪个在预览中有效,但未应用于该列。我究竟做错了什么?
我有一列包含重复的值,例如
VMS5796,VMS5650,VMS5650,CSL,VMA5216,CSL,VMA5113
我正在使用删除重复项的 jython 应用转换(错误设置为保持原始),这是代码:
return list(set(value.split(",")))
哪个在预览中有效,但未应用于该列。我究竟做错了什么?
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))
预览隐式地格式化显示的东西。您的表达式返回一个数组(不能存储在单元格中),因此如果您想获得它的字符串形式,请在末尾添加一个 .join(',') 。