给定以下 Dataframe
df = pd.DataFrame(data={'name': ['a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c'],
'lag': [1, 1, 1, 2, 2, 2, 2, 2, 2, 2],
'value': range(10)})
print(df)
lag name value
0 1 a 0
1 1 a 1
2 1 a 2
3 2 b 3
4 2 b 4
5 2 b 5
6 2 b 6
7 2 c 7
8 2 c 8
9 2 c 9
我试图移动value
列中包含的值以获得expected_value
列,它是按name
列分组并按lag
行移动的值。我想使用类似df['expected_value'] = df.groupby(['name', 'lag']).shift()
的东西,但我不确定如何将lag
传递给shift()
函数。
print(df)
lag name value expected_value
0 1 a 0 nan
1 1 a 1 0.0000
2 1 a 2 1.0000
3 2 b 3 nan
4 2 b 4 nan
5 2 b 5 3.0000
6 2 b 6 4.0000
7 2 c 7 nan
8 2 c 8 nan
9 2 c 9 7.0000
2条答案
按热度按时间kfgdxczn1#
您可以在这里使用
GroupBy.transform
。h79rfbju2#
您可以使用
apply
:输出: