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

Pandas按列中指定起始值选取从该行到末尾的所有行

解决DataFrame从指定年份行开始截取到末尾的问题

我来帮你搞定这个问题!你现在的代码只是生成了一个包含布尔判断结果的列表,并没有真正筛选出你需要的目标行。咱们一步步来修正:

为什么你的代码没得到想要的结果?

你写的df2 = [df1.year==yearstart]其实是把df1.year==yearstart这个布尔Series放进了一个列表里,所以最终得到的是一个列表,而不是筛选后的DataFrame。要实现行筛选,得直接用布尔Series去索引原DataFrame。

方法一:通过索引切片实现(适合唯一匹配的情况)

如果你的year列里1950只出现一次,可以先找到它对应的索引,再从这个索引开始切片到末尾:

yearstart = 1950
# 找到year等于1950的行的索引
start_index = df1[df1['year'] == yearstart].index[0]
# 从该索引开始截取到末尾
df2 = df1.loc[start_index:]

方法二:用累积布尔掩码实现(更通用,支持重复匹配)

如果year列里可能有多个1950的行,或者你想确保从第一个匹配的行开始一直取到末尾,可以用cummax()方法生成累积的布尔掩码:

yearstart = 1950
# 生成掩码:第一个匹配行及之后的所有行都为True
mask = (df1['year'] == yearstart).cummax()
# 用掩码筛选行
df2 = df1[mask]

最终你会得到期望的df2:

year     5
2  1950 -1.74
3  1951  0.17
4  1952 -0.93

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:57:34