Dataprep中csv文件中的数值不匹配

时间:2019-04-04 14:31:34

标签: google-cloud-platform google-cloud-dataprep

我很难理解为什么Dataprep会为我试图从.csv文件导入的数值分配不匹配的值。

在我的Excel中,一切看上去都很正常:

enter image description here

但是在dataprep中,这就是我得到的值:

enter image description here

对于大多数高于1000的数字来说,似乎都是这样。

如何防止这种情况?我将文件另存为.csv

1 个答案:

答案 0 :(得分:1)

这很可能是由于Excel中的原始格式(特别是“会计”和“逗号样式”数字格式会这样做,因为它证明货币符号或符号是格式的一部分)。在这种情况下,您还会注意到从Excel粘贴时包含前导和尾随空白字符。

Dataprep不会花太多时间为您考虑-在这种情况下,他们会以保守的角度为您提供原始数据,并让您决定是否需要重新格式化。

要确认Dataprep的行为不正常,您只需要在文本编辑器中打开CSV,您很可能会看到那些相同的带引号的字符串。当其他系统生成应用了数字格式的CSV(在CSV中将值用引号引起来的字符串)时,这也很常见。同样,任何包含逗号的文本列通常都会被引用(根据需要,因为这通常是定界符并且具有特殊含义)。

非常感谢,这是一个简单的解决方法。如果要将逗号作为十进制类型,还必须替换逗号。


简单替换:

接口:

  1. 格式>修剪前导和尾随行情
  2. Format>修剪前导和尾随空白
  3. 替换>文本或图案(替换“,”;请确保选中“匹配所有匹配项”框

生成的Wrangle脚本:

textformat col: col1 type: trimquotes
textformat col: col1 type: trimwhitespace
replacepatterns col: col1 with: '' on: ',' global: true

正则表达式(第一步替换):

replacepatterns col: col1 with: '' on: /[^0-9.]/ global: true

在一个由不懂正则表达式的人组成的混合团队中,前者有时会更清晰,更不令人生畏,但在一个步骤中这样做会容易得多。