python - 如何根据列值的长度过滤数据框行

标签 python python-3.x pandas dataframe

我有一个数据框,其中一列包含以下字符串:

df=pd.DataFrame(['Hello world', 'World is good', 'Worldisnice hello'], columns=['A'])

df
                     A
0         'Hello world'
1       'World is good'
2   'Worldisnice hello'


我正在尝试获取包含一个单词且长度为 11 个字符的行

我正在使用下面的代码,因为它给出了字符串的长度而不是列中的单词

df = df[df['A'].apply(lambda x: len(x) == 11)]

得到如下结果:

df
                     A
0         'Hello world'

输出应该是:

df
                     A
0   'Worldisnice hello'

因为是唯一一个包含一个长度等于11个字符的单词

谢谢

最佳答案

len(x) 在您的代码中检查整个字符串的长度。

>>> df.A.str.len()
 0    11
 1    13
 2    17

您需要做的是将字符串拆分为单词并检查是否有任何单词的长度为 == 11。

下面的代码应该完成这项工作。

>>> df[df['A'].apply(lambda x: any(len(y) == 11 for y in x.split()))]
                  A
2  Worldisnice hello

关于python - 如何根据列值的长度过滤数据框行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65641687/

相关文章:

python - 使用 Pandas 和 Scatter_Matrix 将不会显示

python - Seaborn fiddle 图,用于按分类列分割单列

python - 为什么 max() 有时返回 nan 有时忽略它?

python - 根据作业编号绘制成绩

在循环中更新多个类变量的 Pythonic 方法?

python - 数据帧错误 - ValueError : Can only compare identically-labeled Series objects

python - pandas.read_excel 在 excel 中具有相同的列名

python - awscli 入门错误

python - `UnicodeDecodeError: ' utf-8 ' codec can' t 解码位置 1 中的字节 0x8b : invalid start byte`

python-3.x - 我如何为维基百科页面构建一个基本的网络爬虫来收集链接?