如何用Pandas的loc方法替代lookup实现类Zip式选择?
用loc实现DataFrame类Zip式选择的替代方案
针对df.lookup()被弃用的情况,有两种常用方法用loc实现相同的配对取值逻辑:
方法1:遍历行-列配对组合
直接用zip()把行标签和列标签一一配对,通过列表推导式遍历获取每个位置的值:
import pandas as pd # 示例DataFrame df = pd.DataFrame({'a': [10, 20, 30], 'b': [40, 50, 60]}, index=['one', 'two', 'three']) rows = ["one", "two"] cols = ["a", "b"] # 生成配对取值结果 result = [df.loc[row, col] for row, col in zip(rows, cols)] # 输出:[10, 50]
方法2:利用numpy对角线提取
先通过loc选取对应的行和列组成子DataFrame,再用np.diag()提取对角线元素(正好对应行-列的配对值):
import numpy as np # 先获取子DataFrame subset = df.loc[rows, cols] # 提取对角线值 result = np.diag(subset) # 输出:array([10, 50])
两种方法都能完全替代df.lookup(rows, cols)的功能,返回的结果格式略有不同(列表/数组),可根据需求转换。
内容的提问来源于stack exchange,提问作者P.Jo
相关产品推荐
相关产品推荐

