首页 > 解决方案 > Pandas groupby 值并获取最大日期和最小日期的值

问题描述

df我有一个看起来像这样的熊猫数据框:

item year value
A    2010  20
A    2011  25
A    2012  32
B    2016  20
B    2019  40
B    2018  50

我的目标是能够为每个项目计算每个日期之间的价值差异。然后例如,我想为项目 A 找到:12(32 -20,因为最大年份是 2012,最小年份是 2010)和项目 B:20(40 - 20,因为最大年份是 2019,最小年份是 2016) .

我使用以下代码为每个项目获取最大年份和最小年份:

df.groupby("item").agg({'year':[np.min, np.max]})

然后,我找到每个项目的最小年份和最大年份。然而,我坚持做我想要的。

标签: pythonpython-3.xpandasdataframepandas-groupby

解决方案


尝试sort_valuesby year,然后您可以groupby选择firstforminlastfor max

g = df.sort_values('year').groupby('item')
out = g['value'].last() - g['value'].first()

输出:

item
A    12
B    20
Name: value, dtype: int64

推荐阅读