値が重複している列があります。
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))
おそらく他にも、これよりもわずかに速いバリエーションもありますが、これで正しい方向に進むはずです。
興味深いことに、OpenRefine のような EVAL に受け入れられる「印刷可能な表現」 repr(object) を取得することもでき、値の表現を確認するのにも役立ちます。あなたのためにもっと深く。
deduped_list = list(set(value.split(",")))
return ', '.join(map(repr, deduped_list))
プレビューは、表示用に暗黙的にフォーマットします。式は配列を返します (セルに格納することはできません)。したがって、文字列形式で取得したい場合は、末尾に .join(',') を追加します。