如何用Pandas列值作为索引获取另一行数据?代码报错求助
问题核心
你踩的坑是**max_idx是一列Series数据(每行对应各自周期的高点索引),不是单个整数**,所以直接把它当索引参数用(比如df.loc['max_idx', 'High']这种写法)肯定会报错,因为pandas没法用一列值去单索引定位。
修复方案
根据max_idx的类型分两种处理方式:
1. 如果max_idx是整数位置索引(比如0、1、2这种行的位置序号)
用take方法批量提取每个max_idx对应的High值:
df["high_int"] = df.Slope * (df.index - df['max_idx']) + df['High'].take(df['max_idx'])
2. 如果max_idx是行标签(比如日期、自定义字符串索引)
用loc配合.values来对齐数据,避免索引不匹配的问题:
df["high_int"] = df.Slope * (df.index - df['max_idx']) + df['High'].loc[df['max_idx']].values
额外注意
- 别再把
df['max_idx']当单个整数用,它是一列数据,必须用批量索引的方式取对应值 - 要确保
max_idx里的每个值都在DataFrame的索引/位置范围内,不然会报索引越界错误
内容的提问来源于stack exchange,提问作者BTT
相关产品推荐
相关产品推荐

