【问题标题】:What does this line do? df = df[~df[runner].str.contains("[a-z]").fillna(False)]这条线有什么作用? df = df[~df[runner].str.contains("[a-z]").fillna(False)]
【发布时间】:2019-10-06 00:07:59
【问题描述】:

我可以检查一下这条线是做什么的吗?

df = df[~df[runner].str.contains("[a-z]").fillna(False)]

此代码是否删除了所有包含以字母开头的字符串的行? 第二个问题是~的目的是什么?它有什么作用?

谢谢

【问题讨论】:

  • 是否可以添加条件来检查 1 行中是否还有超过 3 个字符?
  • 正则表达式将是“[a-z]{3,}”,它匹配从 a 到 z 的超过 3 个字符。

标签: python pandas


【解决方案1】:

此代码正在屏蔽 DataFrame。

RegEx "[a-z]" 表示包含任何字符“a 到 z”(不是“开头”,因为这将是 "^[a-z]")。

.fillna(False) 表示此掩码的每个 NaN 都被视为 False。

~ 正在反转掩码,以便返回未选择的行。

请注意包含 NaN 的行。如果这不是故意的,您必须使用.fillna(True)。

【讨论】:

  • 值得注意的是,使用na 参数:~df[runner].str.contains("[a-z]", na=False) 而不是使用fillna 作为后续步骤可能更惯用。
猜你喜欢
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 2021-10-31
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 2011-03-23
相关资源
最近更新 更多