Pandas Groupby.first方法参数取值是否存在索引限制?
问题解答
核心原因是你对DataFrameGroupBy.first()方法的参数作用存在误解:
groupby.first()的第一个参数不是「要返回的分组内第n条记录的序号」,而是时间偏移参数offset,仅当分组后的索引为时间序列类型时才会生效,作用是筛选出分组中前offset时间范围内的第一条非空记录。- 当索引不是时间类型时,你传入的
10会被直接忽略,方法会默认返回每个分组的第一条记录。你的所有分组都恰好有1条记录,所以能正常返回结果,不会触发报错。
如果你想要实现「返回每个分组内第n条记录」的需求,应该调用nth()方法:
# 取每个分组第1条记录(序号从0开始计数) g.nth(0) # 取每个分组第10条记录,分组行数不足时对应位置返回NaN g.nth(9)
你可以自行测试运行g.first()(不带任何参数),得到的结果会和g.first(10)完全一致,进一步证明本次调用中传入的10没有实际作用。
另外你可以观察到返回结果中仅保留了population这一列,这是因为无有效offset参数时,first()会默认仅返回数值类型的列,字符串类型的iso_code列被自动过滤了。
内容的提问来源于stack exchange,提问作者Ginger_Chacha
相关产品推荐
相关产品推荐

