如何在pandas中判断交易金额可被10整除并生成0/1标识列
报错原因
- pandas的
assign方法不接收axis参数,传入该参数会直接触发参数不匹配错误 - 普通Python三元表达式
1 if 条件 else 0只能对标量做判断,无法直接作用于整列(Series),会抛出The truth value of a Series is ambiguous类异常
正确实现(两种方案任选即可)
方案1:直接布尔值转整数(最简洁)
利用Python中布尔值True对应整数1、False对应整数0的特性,直接对判断结果做类型转换:
df = df.assign(whole_amt = lambda x: (x.transaction_amount % 10 == 0).astype(int))
方案2:用numpy.where做向量化判断
适合后续判断逻辑更复杂的扩展场景:
import numpy as np df = df.assign(whole_amt = lambda x: np.where(x.transaction_amount % 10 == 0, 1, 0))
内容的提问来源于stack exchange,提问作者Bishu
相关产品推荐
相关产品推荐

