python - Pandas groupby 值并获取最大日期和最小日期的值

标签 python python-3.x pandas dataframe pandas-groupby

我有一个 pandas DataFrame df 看起来像这样:

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

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

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

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

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

最佳答案

尝试按yearsort_values,然后你可以groupby并选择first for minlastmax:

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

输出:

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

关于python - Pandas groupby 值并获取最大日期和最小日期的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69789474/

相关文章:

python - Pandas:如何重用数据中的索引信息?

python - 如何在 Seaborn boxplot 中编辑 mustache 、传单、帽等的属性

python-3.x - 安装 github 子模块时,诗歌安装失败并显示 [CalledProcessError]

python - 为什么数组的形状不正确?

python - 使用 Boto2 中的 key 对创建 EC2 实例

返回字符串中最长单词的 Pythonic 方法

python - 比较泛型类型对象的类型

python - 转换 pandas.DataFrame 中的元组列表

python - 为什么 mydict.items().sort() 不起作用?

python - 使用 NumPy 和 PyQt4 重复显示随机噪声图像