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]取第二行,完全符合需求。
验证测试
针对两种场景验证效果:
- 多行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,即第二行数据
- 单行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
相关产品推荐
相关产品推荐

