为Pandas DataFrame添加布尔值新Series时遇KeyError错误求助
问题分析与解决
你的代码报错是因为布尔值使用方式错误:(['Program_Start_Date']==Trimester_Start_Date)是将字符串列表['Program_Start_Date']和日期Trimester_Start_Date做比较,得到的是单一布尔值False,直接用这个值作为.loc的索引会触发KeyError——因为.loc默认按标签索引,找不到名为False的行标签,且没有配合布尔索引的规则使用。
正确写法
要生成预期的布尔列,直接对DataFrame的列和目标日期做比较即可,有两种常用方式:
方式1:直接生成布尔Series
EM['Starting'] = EM['Program_Start_Date'] == Trimester_Start_Date
方式2:使用.loc的布尔索引(适合复杂场景)
如果需要后续基于条件修改值,也可以先初始化列再赋值:
# 先全设为False EM['Starting'] = False # 给符合条件的行设为True EM.loc[EM['Program_Start_Date'] == Trimester_Start_Date, 'Starting'] = True
效果验证
按照你的数据,前5行Program_Start_Date等于2022-05-30,所以这5行的Starting列会是True,其余行是False,完全符合你的预期。
内容的提问来源于stack exchange,提问作者Lucas Kidd
相关产品推荐
相关产品推荐

