Pandas技术问询:根据指定列索引提取DataFrame对应值
嘿,我来帮你搞定这个提取需求!你要做的就是根据r里指定的列ID,从cs中精准提取对应位置的值,用Pandas可以轻松实现:
解决方案
首先我们得把r里的浮点数列ID转成整数(因为cs的列名是整数类型,直接用浮点数会匹配不到),然后用Pandas专门的lookup方法来快速匹配行索引和列标签,这是效率最高的方式之一:
import pandas as pd # 把r中的列ID从浮点数转为整数(r只有一列,列名为0) r_int = r[0].astype(int) # 使用lookup提取对应位置的值,并用原索引构建结果Series result = pd.Series(cs.lookup(cs.index, r_int), index=cs.index) print(result)
运行这段代码后,你会得到期望的结果:
130 S 143 C 146 C 324 S 327 R dtype: object
备选方法:逐行处理(更直观)
如果你偏好更易理解的逐行操作,也可以用apply方法实现:
result = cs.apply(lambda row: row[r.loc[row.name]], axis=1)
它会遍历cs的每一行,根据当前行的索引找到r中对应的列ID,再提取该行对应列的值,结果和上面完全一致。
小提示
lookup是Pandas专门为“按行+列标签提取值”设计的方法,数据量越大,它的性能优势越明显,比apply高效很多。- 一定要把
r的浮点数转成整数,不然会因为列名类型不匹配,提取不到正确的值哦!
内容的提问来源于stack exchange,提问作者dayum
相关产品推荐
相关产品推荐

