如何基于DataFrame列中单词的长度筛选数据行
解决筛选包含指定长度单词的DataFrame行问题
嘿,我明白你的问题啦!你之前的代码是在判断整个字符串的长度是否等于11,而不是检查字符串里的单个单词长度,这就是为什么得到了错误的结果。
正确的解决方案
我们需要把每个字符串拆分成独立的单词,然后检查其中是否存在长度为11的单词。可以用apply()结合any()来实现:
import pandas as pd # 你的原始DataFrame df = pd.DataFrame(['Hello world', 'World is good', 'Worldisnice hello'], columns=['A']) # 筛选包含长度为11的单词的行 filtered_df = df[df['A'].apply(lambda x: any(len(word) == 11 for word in x.split()))] print(filtered_df)
代码解释
x.split():把每行的字符串按空格拆分成单词列表(比如第三行会拆成['Worldisnice', 'hello'])len(word) == 11:检查每个单词的长度是否为11any(...):只要列表中有一个单词满足长度条件,就返回True,对应的行就会被保留
执行这段代码后,你会得到预期的结果:
A 2 Worldisnice hello
扩展说明
如果你的字符串里有其他分隔符(比如逗号、句号等),可以用正则表达式来拆分单词,比如:
import re filtered_df = df[df['A'].apply(lambda x: any(len(word) == 11 for word in re.findall(r'\b\w+\b', x)))]
re.findall(r'\b\w+\b', x)会提取所有由字母数字组成的独立单词,不受其他分隔符影响。
内容的提问来源于stack exchange,提问作者Nacho
相关产品推荐
相关产品推荐

