如何在DataFrame中使用Python in运算符判断剧情片并生成布尔列
解决方案
错误原因分析
isin(["Dramas"])全为False的原因isin方法会检查listed_in字段的完整值是否匹配给定列表中的内容。如果你的listed_in字段是类似"Dramas, Thrillers"这种包含多个类型的字符串,而非单独的"Dramas",自然无法匹配,结果全为False。apply(lambda x: x['listed_in'] in x['Dramas'])报KeyError的原因
这里你错误地尝试访问DataFrame中名为Dramas的列,但你的数据里根本不存在这个列。正确逻辑应该是判断字符串"Dramas"是否存在于listed_in字段的内容中,而非反过来。
正确实现(使用in运算符)
如果listed_in是字符串类型(比如用逗号分隔多个电影类型),直接用apply结合in运算符即可:
import pandas as pd # 针对字符串类型的listed_in字段 df["drama_movie"] = df['listed_in'].apply(lambda x: "Dramas" in x)
如果需要处理空值(避免NaN引发错误),可以补充空值判断:
df["drama_movie"] = df['listed_in'].apply(lambda x: "Dramas" in x if pd.notna(x) else False)
如果你的listed_in字段是列表类型(每个条目存储一个类型列表),用in的写法如下:
# 针对列表类型的listed_in字段 df["drama_movie"] = df['listed_in'].apply(lambda x: "Dramas" in x)
内容的提问来源于stack exchange,提问作者new_python_guy
相关产品推荐
相关产品推荐

