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
相关产品推荐
相关产品推荐

