python - 从 DataFrame 中删除包含 0 到 9 数字的行

标签 python pandas

我有一个数据框,其中有一列 (ResourceName),其中包含不同类型的名称:

Testvalue
F424221M
F844071
water

我想删除包含数字的行(第2行和第3行),以便保留具有测试值的行。我找不到合适的解决方案。

类似于:

df1 = df1[(df1['ResourceName']) != '**CONTAINS ANY NUMBER**']

最佳答案

您可以使用矢量化的 contains和正则表达式模式 \d 来查看字符串是否包含任何数字来创建 bool 掩码并使用 ~ 对其求反:

In [173]:
df[~df['Testvalue'].str.contains('\d')]

Out[173]:
  Testvalue
2     water

这里的contains生成以下 bool 掩码:

In [174]:
df['Testvalue'].str.contains('\d')

Out[174]:
0     True
1     True
2    False
Name: Testvalue, dtype: bool

关于python - 从 DataFrame 中删除包含 0 到 9 数字的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31539187/

相关文章:

python - 在 Pandas 上以不同方式计算整数和字符串

python - 根据组最大值在 DataFrame 列中分配新值

python - difflib.HTMLDiff.make_file() 的输出未在浏览器中呈现

python - 使用 savefig 时生成较小文件大小的 PNG 选项

python - mongodb elemMatch在双数组中

python - 拆分系列并替换为 Pandas 中的 `\t`

python - 子集 Pandas 数据框

python - 我应该使用什么模式来打印以下代码的日期、时间和进程 ID?

python - 如何从 python/Sage 中的多项式中提取变量

python - 自动 Pandas 日期标签不一致