You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas筛选CSV指定值时isin()函数失效问题求助

解决Pandas筛选动漫流派无效的问题

问题根源

你遇到的问题是因为数据集里的genre列存储的是字符串格式的列表(比如"['Action', 'Comedy']"),而非真正的Python列表类型。直接用isin()会把整个字符串当作匹配对象,自然找不到单个流派的匹配项。

修复步骤

1. 转换genre列的数据类型

使用ast.literal_eval()把字符串格式的列表转为真正的列表:

import pandas as pd
import ast

df = pd.read_csv('animes.csv')
# 转换genre列的字符串为列表
df['genre'] = df['genre'].apply(ast.literal_eval)

2. 正确筛选包含目标流派的数据

因为每个单元格是列表,需要检查目标流派是否存在于该列表中,用apply()结合any()实现:

genre = True
genre_list = []

while genre:
    genre_input = input("What genres would you like to watch?, input \"done\" when done listing!\n")
    if genre_input == "done":
        genre = False
    else:
        genre_list.append(genre_input.strip())  # 去除输入的空格避免干扰
print(genre_list)

# 筛选包含任意目标流派的行
df_genre = df[df['genre'].apply(lambda x: any(g in x for g in genre_list))]
print(df_genre)

额外优化建议

可以统一大小写避免匹配失败:

# 把数据集里的流派转为小写
df['genre'] = df['genre'].apply(lambda x: [g.lower() for g in x])
# 输入时同步转小写
genre_list.append(genre_input.strip().lower())

内容的提问来源于stack exchange,提问作者Kream123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:45:46