解决Pandas DataFrame中text列为字符串列表时的行筛选问题
解决方案
问题出在str.contains仅对字符串类型的列生效,而你的text列元素是字符串列表,所以该方法无法正确识别列表中的内容。
1. 创建仅包含text列含"Joe"的行的DataFrame
使用apply结合lambda函数遍历每个列表,判断"Joe"是否存在:
df_joe = df[df['text'].apply(lambda lst: "Joe" in lst)]
2. 删除text列含"Joe"的行,得到剩余数据
在上述判断前加取反符号~即可:
df_no_joe = df[~df['text'].apply(lambda lst: "Joe" in lst)]
处理可能的缺失值(可选)
如果text列存在非列表类型(比如NaN),可以增加类型判断避免报错:
# 筛选含"Joe"的行 df_joe = df[df['text'].apply(lambda x: isinstance(x, list) and "Joe" in x)] # 删除含"Joe"的行 df_no_joe = df[~df['text'].apply(lambda x: isinstance(x, list) and "Joe" in x)]
内容的提问来源于stack exchange,提问作者Quentin Phillips
相关产品推荐
相关产品推荐

