如何为Pandas DataFrame新增基于另一列判断的0/1值列
报错原因
- 代码中的
check[]是非法Python语法,不存在这种写法 - Pandas中要判断Series的每个元素是否存在于指定列表,不能直接用
==和列表做比较,需要调用内置的isin()方法
正确实现代码
import numpy as np import pandas as pd # 初始化列表数据 data = [['tom', 10], ['nick', 15], ['juli', 14]] check = ['nick'] # 创建Pandas DataFrame df = pd.DataFrame(data, columns = ['Name', 'Age']) # 新增Checks列 df['Checks'] = np.where(df['Name'].isin(check), 1, 0) # 打印DataFrame print(df) print(check)
运行输出结果
Name Age Checks 0 tom 10 0 1 nick 15 1 2 juli 14 0 ['nick']
更简洁的无numpy替代写法
直接将布尔判断结果转整数即可,不需要引入numpy依赖:
df['Checks'] = df['Name'].isin(check).astype(int)
内容的提问来源于stack exchange,提问作者Him3090
相关产品推荐
相关产品推荐

