如何使用Python Pandas访问CSV文件的倒数第二行?
取CSV倒数第二行的实现方法
基础取数规则
pandas的iloc方法支持负索引倒序提取行,你现有用iloc[-1:,:]取最后一行的写法是符合规则的,对应取倒数第二行只需调整索引值:
- 负索引映射:
-1对应最后1行,-2对应倒数第2行 - 为保持和你现有代码一致的二维DataFrame结构,取数时统一用切片形式:
- 取最后一行代码:
file1.iloc[-1:,:] - 取倒数第二行代码:
file1.iloc[-2:-1,:]
注意 不要直接写file1.iloc[-2],这种不带切片的写法会把单行数据压缩为一维Series,后续按列索引取值时会出现不匹配报错。
- 取最后一行代码:
适配需求的判断逻辑
针对“最后一行目标列为空时自动切换取倒数第二行”的需求,推荐直接对原始值做空值判断,比靠格式化后的字符串匹配'nan'更稳定,对应适配你现有代码的实现如下:
# 初始化默认取最后一行的数据子集 target_data = file1.iloc[-1:, :] # 判断目标列(第4列,索引从0开始计数)是否为空 if pd.isna(target_data.iloc[0, 4]): # 最后一行目标值为空时,替换为取倒数第二行数据 target_data = file1.iloc[-2:-1, :] # 后续取值逻辑直接替换原来的df1即可 Austria_date = target_data.iloc[:, 1] Austria_cum = target_data.iloc[:, 4].map('{:,}'.format)
常见问题提醒
- 不要用字符串匹配判断空值:你当前将数值列空值格式化后判断是否等于
'nan'的写法,在列存在文本内容恰好为'nan'、或空值为其他类型的场景下会出现误判,直接用pd.isna()判断原始值是最可靠的方式。 - 取单行时必须保留切片写法:如果丢掉切片直接写
iloc[-2],得到的一维结构和你原本适配二维DataFrame的取值逻辑不兼容,会直接触发索引错误。
内容的提问来源于stack exchange,提问作者JohnReese23487
相关产品推荐
相关产品推荐

