python - 从数据框中删除字符串长度大于某个数字的行,在某个字符(“,”)之后直到结束
问题描述
输入:我有一个名称包含 2 个值除以“,”的数据框
id name
1 xy,ab
2 cv,asdf
3 piy,bs
预期输出:我想在“,”之后删除名称字符串长度大于 2 的行。
id name
1 xy,ab
3 piy,bs
我试过的代码:
df = df[~df['name'].str.split().str.len().ge(2)]
df
此代码仅删除大于 2 的字符串长度,但我希望它发生在“,”之后。
解决方案
您可以使用Series.str.match
并传递regex
:
>>> df[df['name'].str.match('.*?,\w{0,2}$')]
id name
0 1 xy,ab
2 3 piy,bs
或者你可以用逗号分割值,取最后一个值,然后检查长度是否小于或等于 2:
>>> df[df['name'].str.split(',').str[-1].str.len().le(2)]
id name
0 1 xy,ab
2 3 piy,bs
推荐阅读
- c# - 从嵌入 firebird 的 odb 数据库读取数据并从 C# 连接
- python - SQL Alchemy 不返回所有列
- c# - 请帮助我使用 Unity3D
- python-3.x - 如何强制 pip 在 Windows 上更新?
- sql - Apex 甘特图与日历
- email - 如何在接收特定类型的电子邮件时自动单击链接?
- node.js - 无法通过 heroku 连接到 MongoDB,但可以在 localhost 上运行
- python - 跨模块的 Python 全局变量
- python - 使用 Pytorch Lightning 时如何将指标(例如验证损失)记录到 TensorBoard?
- java - 如何从侦听器返回 ArrayList