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

Pandas数据选择:如何获取第二行,行数为1时返回该行?

解决方案:根据DataFrame行数选择对应行

你需要实现的逻辑是:当DataFrame行数≥2时取第二行,行数为1时取唯一的那一行。以下是几种可靠的实现方式:

方法1:利用iloc结合长度判断

直接通过DataFrame的长度决定取哪个索引位置,逻辑清晰且不会触发索引越界:

# 行数≥2时取第二行(索引1),仅一行时取唯一行(索引0)
result = df.iloc[1 if len(df) >= 2 else 0]

方法2:简化版head(2).iloc[-1]

你之前尝试的df.head(2).tail(1)其实在单行场景下是有效的,还可以用更简洁的写法替代:

result = df.head(2).iloc[-1]
  • 当DataFrame只有1行时,head(2)返回该行,iloc[-1]取唯一的行;
  • 当行数≥2时,head(2)返回前两行,iloc[-1]取第二行,完全符合需求。

验证测试

针对两种场景验证效果:

  1. 多行DataFrame(你的示例数据):
import pandas as pd
df = pd.DataFrame(range(20,28), columns=["day"])
df.sort_values("day", ascending=True, inplace=True)
print(df.head(2).iloc[-1])
# 输出:day    21,即第二行数据
  1. 单行DataFrame:
df_single = pd.DataFrame([20], columns=["day"])
print(df_single.head(2).iloc[-1])
# 输出:day    20,即唯一的行

错误示例的问题原因

你执行df.head(1).iloc[1]时,df.head(1)仅返回1行数据,索引范围只有0,强行访问iloc[1]必然触发IndexError,这是因为你错误访问了不存在的索引位置,和你最初的head(2).tail(1)方法逻辑完全不同。

内容的提问来源于stack exchange,提问作者jtlz2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:17:27