pandas groupby 每组的最新观察结果
Posted
技术标签:
【中文标题】pandas groupby 每组的最新观察结果【英文标题】:pandas groupby latest observation for each group 【发布时间】:2020-11-05 08:08:21 【问题描述】:我有一个面板数据框(ID 和时间)并希望收集每个 ID 的最近(最新)行。这是表格:
df = pd.DataFrame('ID': [1,1,2,3] , 'Year': [2018,2019,2019,2020] , 'Var1':list("abcd") , 'Var2': list("efgh"))
最终的结果是:
【问题讨论】:
这能回答你的问题吗? Pandas dataframe get first row of each group 【参考方案1】:使用 drop_duplicates:
df.sort_values('Year').drop_duplicates('ID', keep='last')
输出:
ID Year Var1 Var2
1 1 2019 b f
2 2 2019 c g
3 3 2020 d h
【讨论】:
是的,你可以像@Roy2012那样使用groupby方法。 我不确定@ROy2012 解决方案中的last()
方法是否基于时间排序。我想确保我得到最新的日期/年份。
@Roo df.sort_values('Year').groupby("ID").last()
将确保这一点。对数据框进行适当的排序,然后 groupby 将执行此操作。【参考方案2】:
使用tail
:
df.groupby("ID").tail(1)
输出是:
ID Year Var1 Var2
1 1 2019 b f
2 2 2019 c g
3 3 2020 d h
另一种选择是使用last
:
df.groupby("ID").last()
【讨论】:
以上是关于pandas groupby 每组的最新观察结果的主要内容,如果未能解决你的问题,请参考以下文章