Pandas提取两列差异值时出现Series不可哈希错误如何解决
报错原因
drop_duplicates方法的subset参数要求传入列名或者列名组成的列表,你传入了两个Series对象作为参数,Series属于可变对象,无法被哈希用于子集判断,同时drop_duplicates本身是数据去重方法,和你需要的按条件筛选赋值的需求逻辑完全不匹配。
正确实现方式
你的需求本质是:第53列的取值规则为,当第51列的值为负数时保留原值,非负数时替换为0,可以用以下几种方法实现:
- 方法1:使用
numpy.where实现(最简洁)
import numpy as np df.loc[:, 53] = np.where(df.loc[:, 51] < 0, df.loc[:, 51], 0)
- 方法2:使用pandas自带的
Series.where方法,无需额外导入依赖
df.loc[:, 53] = df.loc[:, 51].where(df.loc[:, 51] < 0, 0)
- 方法3:使用布尔索引分步赋值
# 先初始化第53列全为0 df.loc[:, 53] = 0 # 将第51列中为负数的位置对应值赋值到第53列 mask = df.loc[:, 51] < 0 df.loc[mask, 53] = df.loc[mask, 51]
内容的提问来源于stack exchange,提问作者irfanraorao
相关产品推荐
相关产品推荐

