gpt4 book ai didi

python - Pandas - 时间序列按组移动

转载 作者:太空宇宙 更新时间:2023-11-04 09:41:27 27 4
gpt4 key购买 nike

我有一个这样的数据框:

pd.DataFrame({'group': {0: 1, 1: 1, 2: 1, 3: 1, 4: 2, 5: 2, 6: 2}, 'year': {0: 2007, 1: 2008, 2: 2009, 3: 2010, 4: 2006, 5: 2007, 6: 2008}, 'amount': {0: 2.0, 1: 4.0, 2: np.nan, 3: 7.0, 4: 8.0, 5: 10.0, 6: 12.0}}])

group year amount
0 1 2007 2
1 1 2008 4
2 1 2009 NaN
3 1 2010 7
4 2 2006 8
5 2 2007 10
6 2 2008 12

我想为每个组添加最小值(删除 NA)、最大值(删除 NA)、滞后 1 和滞后 2。我理想的数据框是这样的

   group    year    amount    min    max   lag1    lag2
0 1 2007 2 2 7 NaN NaN
1 1 2008 4 2 7 2 NaN
2 1 2009 NaN 2 7 4 2
3 1 2010 7 2 7 NaN 4
4 2 2006 8 8 12 NaN NaN
5 2 2007 10 8 12 8 NaN
6 2 2008 12 8 12 10 8

我知道在 panda 中使用 agg 求最小值和最大值,但我不确定如何按组处理滞后

最佳答案

国际联合会

g = df.groupby('group').amount
df['max'] = g.transform('max')
df['min'] = g.transform('min')
df['lag1'] = g.shift()
df['lag2'] = g.shift(2)

group year amount max min lag1 lag2
0 1 2007 2.0 7.0 2.0 NaN NaN
1 1 2008 4.0 7.0 2.0 2.0 NaN
2 1 2009 NaN 7.0 2.0 4.0 2.0
3 1 2010 7.0 7.0 2.0 NaN 4.0
4 2 2006 8.0 12.0 8.0 NaN NaN
5 2 2007 10.0 12.0 8.0 8.0 NaN
6 2 2008 12.0 12.0 8.0 10.0 8.0

关于python - Pandas - 时间序列按组移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51521343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com