Python如何为DataFrame新增列标识值是否存在于指定Series
错误原因
你写的代码存在3个问题:
- 列名属于字符串,需要用引号包裹,否则Python会把
series_yn、ID识别为未定义的变量,而非DataFrame的列名 - 赋值操作需要使用单等号
=,你写的==是比较运算符,仅用于判断左右两侧值是否相等,无法完成赋值操作 - 赋值逻辑顺序颠倒,应该把右侧
isin方法的计算结果赋值给左侧的新列
正确实现代码
如果你的ID序列变量名为id_series,待处理的DataFrame变量名为df,一行代码即可实现需求:
df['series_yn'] = df['ID'].isin(id_series).astype(int)
isin()方法会返回布尔值序列:ID在序列中为True,不在为False,直接用astype(int)就能把布尔值转换为对应的1和0,完全匹配你的需求。
完整可运行示例
你可以直接运行下面的代码验证效果:
import pandas as pd # 构造示例ID Series id_series = pd.Series(['A1', 'A2', 'A3']) # 构造示例DataFrame df = pd.DataFrame({ 'ID': ['A1', 'A3', 'A4'], 'age': [10, 20, 20] }) # 新增series_yn列 df['series_yn'] = df['ID'].isin(id_series).astype(int) print(df)
运行输出结果:
ID age series_yn 0 A1 10 1 1 A3 20 1 2 A4 20 0
内容的提问来源于stack exchange,提问作者Python123new
相关产品推荐
相关产品推荐

