首页 > 解决方案 > 从数据框中删除字符串长度大于某个数字的行,在某个字符(“,”)之后直到结束

问题描述

输入:我有一个名称包含 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 的字符串长度,但我希望它发生在“,”之后。

标签: pythonstringdataframesplit

解决方案


您可以使用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

推荐阅读