pandas DataFrame如何根据指定列值提取对应列的匹配数值
实现方案
你可以通过以下两种方式实现需求,分别适配不同的数据规模:
- 小数据量(写法简单易读):
用apply逐行取值,代码逻辑直观,适合行数不多的场景:import pandas as pd # 构造示例DataFrame fruits = pd.DataFrame({ "apple": [1, 1.5, 2], "cherry": [2, 3, 1], "banana": [2, 4, 5], "prices": ["apple", "banana", "cherry"] }) # 新增price_fruits列 fruits['price_fruits'] = fruits.apply(lambda row: row[row['prices']], axis=1) - 大数据量(性能更高):
用numpy高级索引避免逐行循环的开销,处理十万级以上行数时效率提升明显:fruits['price_fruits'] = fruits.to_numpy()[ fruits.index, fruits.columns.get_indexer(fruits['prices']) ]
运行后输出的fruits结构和你给出的预期结果完全一致:
| apple | cherry | banana | prices | price_fruits | |
|---|---|---|---|---|---|
| 0 | 1.0 | 2 | 2 | apple | 1 |
| 1 | 1.5 | 3 | 4 | banana | 4 |
| 2 | 2.0 | 1 | 5 | cherry | 1 |
内容的提问来源于stack exchange,提问作者RMNB
相关产品推荐
相关产品推荐

