You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas获取目标行上数第2行的指定元素?

如何使用Pandas获取目标行上数第2行的指定元素?

嗨,我来帮你搞定这个问题!你现在的思路是找到了所有包含truck的行,但这里有个小问题:只保留这些行的话,我们就丢失了它们在原文件里的上下文信息,自然没法拿到上数第2行的内容。所以得调整一下思路,先把整个文件的有效内容都读进DataFrame,再一步步定位目标值。

具体可以这么做:

第一步:读取所有有效行到DataFrame

首先我们要把文件里所有有用的行都读进来,同时过滤掉那些全是+的分隔行和空行:

import pandas as pd

all_valid_rows = []
with open('input.txt', 'r') as data:
    for line in data:
        split_line = line.strip().split()
        # 跳过空行,以及全是+的分隔行
        if split_line and not all(char == '+' for char in split_line[0]):
            all_valid_rows.append(split_line)

# 把所有有效行转换成DataFrame,每一行都有对应的索引
full_df = pd.DataFrame(all_valid_rows)

第二步:定位所有含truck的行的索引

接下来,我们找到所有第二列(注意Python是0起始索引,所以列索引是1)等于truck的行的位置:

# 获取符合条件的行的索引列表
truck_row_indices = full_df[full_df[1] == 'truck'].index

第三步:获取目标行的指定元素

对每个找到的truck行索引,我们只需要减去2,就能得到“上数第2行”的索引,然后取该行的第三列(列索引是2)即可:

target_results = []
for idx in truck_row_indices:
    # 做个简单的越界判断,避免文件开头就出现truck的情况报错
    if idx >= 2:
        # 取上数第2行的第3个元素
        target_val = full_df.loc[idx - 2, 2]
        target_results.append(target_val)

# 输出最终结果
print('\n'.join(target_results))

运行这段代码,就能得到你想要的beta和delta啦!

为什么要这么调整?因为你之前的代码只收集了truck行,没有保留它们在原文件中的位置,自然没法回溯到前面的行。现在把所有有效行都存在DataFrame里,就能借助Pandas的索引功能精准定位到我们需要的上下文内容。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 06:53:10