如何在Pandas DataFrame中按索引为新增列'Is it valid?'赋值?
实现方法
下面是几种实用的实现方式,按需选择即可:
方法一:用isin结合numpy.where(推荐,效率最高)
这种方式简洁且适合处理大数据量,步骤如下:
先导入依赖库并构造数据:
import pandas as pd import numpy as np indexlist = [0,1,4] df = pd.DataFrame({ 'Name': ['John', 'Peter', 'Paul', 'James', 'Jonatan', 'Maria'], 'Country': ['BR', 'BR', 'BR', 'CZ', 'CZ', 'DK'] })
新增目标列:
df['Is it valid?'] = np.where(df.index.isin(indexlist), 'Yes', 'No')
方法二:用apply遍历索引(逻辑直观,适合小数据)
如果想更直白地写判断逻辑,可以用apply:
df['Is it valid?'] = df.index.to_series().apply(lambda x: 'Yes' if x in indexlist else 'No')
方法三:映射字典 + map
先构建索引到结果的映射,再批量赋值:
# 创建有效索引的映射 valid_map = {idx: 'Yes' for idx in indexlist} # 用map匹配,不在映射里的用fillna补'No' df['Is it valid?'] = df.index.map(valid_map).fillna('No')
执行任意一种方法后,都会得到你需要的结果:
Name Country Is it valid? 0 John BR Yes 1 Peter BR Yes 2 Paul BR No 3 James CZ No 4 Jonatan CZ Yes 5 Maria DK No
内容的提问来源于stack exchange,提问作者Paulo Cortez
相关产品推荐
相关产品推荐

