我的列中包含重复的值,例如
VMS5796,VMS5650,VMS5650,CSL,VMA5216,CSL,VMA5113
我正在使用jython应用转换来删除重复项(On error设置为保持原始状态),这是代码:
return list(set(value.split(",")))
哪个适用于预览,但未应用于该列。我做错了什么?
答案 0 :(得分:1)
Map函数非常强大,并且在Python / Jython中使用不足。可能还不清楚这个代码在内部做了什么,但是在处理列单元格值中的列表或数组中需要作为字符串类型“映射”然后应用连接的数百万位值时,它的速度非常快。分隔符char,例如逗号','
deduped_list = list(set(value.split(",")))
return ', '.join(map(str, deduped_list))
可能有其他甚至比这更快的变化,但这应该让你朝着正确的方向前进。
有趣的是,您还可以获得像OpenRefine这样的EVAL可接受的'可打印表示'repr(对象),并且对于查看您的值的表示也很有用...,我刚刚发现,更深入地研究这个答案。
deduped_list = list(set(value.split(",")))
return ', '.join(map(repr, deduped_list))
答案 1 :(得分:0)
预览隐式格式化显示内容。你的表达式返回一个数组(不能存储在单元格中),所以如果你想得到它的字符串形式,最后添加.join(',')。