【问题标题】:Identify cells with only whitespace [duplicate]识别只有空格的单元格[重复]
【发布时间】:2018-08-28 12:10:57
【问题描述】:

我想应用这个功能

df.column.str.split(expand = True)

但问题是有一些“空单元格”,当我的意思是“空”时,它意味着它有例如 6 个空格。此外,这是一个迭代,所以有时我的单元格有 2 个空格。

如何识别这个“空单元格”?

警察局:

df[df.column != '(6 spaces inside)']

仅适用于有 6 个空格的特定情况。

编辑 1:df.column 是一个带有人名的对象类型(一个或多个,甚至是错误)

编辑2:想法是删除此单元格(行)以成功应用“str.split”功能。这是一个交互,所以有时我的单元格有 6 个空格,而其他单元格有 2 个空格。

编辑 3:我无法删除所有空格,因为这样我将无法应用字符串分隔(因为我有像“Jean Carlo”这样的名字我想分隔)

最终解决方案:我可以通过仅添加“+”信号的帖子来解决问题,因为我在其他单元格中有空格。

解决方案:

df = df.replace(['^\s+$'], np.nan, regex = True)

【问题讨论】:

  • 如果有一个函数可以将字符串中的strips 空格使它们缩小为空字符串...不确定这是否可以解决您的比较问题
  • 您可以使用.strip() 去除所有空格

标签: python string pandas


【解决方案1】:
df['Col1'] = df['Col1'].map(lambda x: x.strip())

这将删除 df['Col1'] 中的所有前导和尾随空格

【讨论】:

  • 这可能会产生意想不到的后果。 OP 仅建议他们要识别完全由空格组成的单元格,而不影响其他字符串上的空格
  • @roganjosh 这也是一个好点。映射一个使用正则表达式来规范化任何多空间值的函数可能会更好,方法是返回一个空格(或任何你想要的标志字符)然后在标志字符上进行子选择
  • @zyd 我建议的副本可以解决这个问题
  • @roganjosh - 确实如此,感谢您指出这一点。
  • 我试过 zyd 的解决方案,我有“'float' object has no attribute 'strip'”
猜你喜欢
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-15
  • 2015-05-26
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多