Pandas中如何为匹配指定列表的DataFrame行批量赋值?
批量标记异常选举选区的实现方案
报错原因
此前的匹配代码a_m_d_8.state_dist in abnormal_race触发报错,是因为Python原生in运算符不会对pandas Series做逐行值匹配,而是尝试将整个Series作为单个对象判断是否存在于目标列表中,因此产生真值判断歧义。
正确实现代码
使用pandas内置的isin()方法完成批量逐行匹配,代码为:
a_m_d_8.loc[a_m_d_8.state_dist.isin(abnormal_race), "abnormal"] = 1
相关说明
- 该方法为向量化计算,运行效率远高于逐选区单独赋值的操作,可快速处理大体量选举数据。
- 代码执行后,所有
state_dist值属于异常选区列表的行,其abnormal列会被赋值为1,其余行保持初始的0值不变。
内容的提问来源于stack exchange,提问作者Demosthenes
相关产品推荐
相关产品推荐

