Pandas如何根据Fruit列值匹配对应计数列新增指定列
最优实现方案
优先推荐向量化操作方案,相比行级遍历/apply性能高数十倍,完全适配业务侧大量分类的场景:
方案1:通用高效实现(兼容全版本pandas)
借助给定的映射字典匹配对应列名,直接按索引取数:
# 将Fruit字段映射为对应的计数列名 target_cols = df['Fruit'].map(fruit_dict) # 按行取对应列的数值写入新列 df['Fruit_count'] = df.lookup(df.index, target_cols)
方案2:高版本pandas兼容方案(pandas >= 1.2.0,lookup已弃用场景)
df['Fruit_count'] = df.to_numpy()[df.index, df.columns.get_indexer(df['Fruit'].map(fruit_dict))]
小数据量简易方案(数据量低于1万行时可使用,可读性更高)
df['Fruit_count'] = df.apply(lambda row: row[fruit_dict[row['Fruit']]], axis=1)
以上三种方案执行后均可得到符合逻辑要求的结果,生产环境优先选用方案1或方案2。
内容的提问来源于stack exchange,提问作者bkeesey
相关产品推荐
相关产品推荐

