python - 删除空格不起作用 - 编码问题?

python - removing whitespaces not working - encoding issue?

我有一个数据集,其中包含从房地产代理机构抓取的数据。 我想从特殊字符(€、m² 等)中清除变量,删除空格并将它们转换为整数。 例如,我有这些价格(Prix de vente)和尺寸(表面可居住):

我设法用以下方法从价格变量中去掉“€”:

data["Prix de vente"] = data["Prix de vente"].str.strip("€")

然而,这两种技术中的 none 可以删除空格

data["Prix de vente"] = data["Prix de vente"].str.strip() 
data["Prix de vente"] = data["Prix de vente"].replace(" ","")

我一直有:

      540 000
      900 000
      890 000
      900 000
      900 000
      ...

我觉得这是由于我的数据编码方式所致。那会是问题吗?如果是这样,我该如何处理? 我正在使用 jupyter 笔记本。

你可以做到

data["Prix de vente"] = data["Prix de vente"].str.replace("\s","", regex=True)

匹配 "\s" 结合 regex=True 而不是 " " 确保不仅匹配常规空格而且匹配 any whitespace character

更多背景:

你的第一个方法

data["Prix de vente"] = data["Prix de vente"].str.strip()

不起作用,因为 .strip() 仅删除前导和尾随字符。

你的第二种方法

data["Prix de vente"] = data["Prix de vente"].replace(" ","")

不起作用,因为它使用的不是 str.replace,而是 pd.Series.replace,它仅替换值的精确匹配(例如“900 000”)。

有通常的方式(但是很丑):

data["Prix de vente"] = "".join(data["Prix de vente"].str.split())

它是如何工作的?

字符串方法 split() 将在 white spaces 上拆分字符串。通用 white spaces,因此不仅 " ",还有 "\t""\u00a0" 等。 然后你再次加入子字符串,没有任何 spaces。 所以你删除了 spaces(不是很直观,但这种方法经常使用,有时只是为了规范化 spaces)。

为什么这有效,但不是您的解决方案?

一些语言环境使用 NBSP(非中断 space,\u00A0)而不是标准的 spaces 来写数字和货币,这更明智(避免在数字组之间换行)。此外,一些格式化程序可能会在这种情况下使用其他类型的 spaces(例如小 spaces),因此解决方案应该关心处理所有不同的白色 spaces.