将DataFrame的id列Series传入dict匹配转换因子报错,求高效方案
解决方法:匹配字典转换因子并更新DataFrame列
你触发的TypeError是因为字典ht无法接受df["id"](Series类型)作为键取值——Series是可变对象,不满足字典键的可哈希要求。
实现需求的最高效方式是使用pandas的Series.map()方法,代码如下:
df["vals"] *= df["id"].map(ht)
补充说明
map()会遍历df["id"]的每个元素,自动匹配ht中对应的转换因子,返回与原Series长度一致的结果Series,直接和vals列相乘即可完成批量更新。- 如果
df["id"]中存在ht里没有的键,会生成NaN导致vals列对应值变为NaN,可以通过fillna()设置默认转换因子(比如用1保持原值):df["vals"] *= df["id"].map(ht).fillna(1)
内容的提问来源于stack exchange,提问作者roulette01
相关产品推荐
相关产品推荐

