Python 熊猫:移位(1)组中的所有值,但第一个值(每组中)应为0

Python 熊猫:移位(1)组中的所有值,但第一个值(每组中)应为0,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,鉴于以下情况: import pandas as pd import numpy as np df = pd.DataFrame(np.random.randint(1,3, (10,2)), columns=['a','b']).sort_values(['a']) 现在,我想用该组中的前一个值替换每个组中的所有值,但每个组中的第一个值要替换为0 这样做不行: df.groupby("a", sort = False).transform(lambda g: g.shift(1).filln

鉴于以下情况:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(1,3, (10,2)), columns=['a','b']).sort_values(['a'])
现在,我想用该组中的前一个值替换每个组中的所有值,但每个组中的第一个值要替换为0

这样做不行:

df.groupby("a", sort = False).transform(lambda g: g.shift(1).fillna(0))

因为我只想将第一个
np.nan
(每组)替换为0

这是您需要的吗

s=df.groupby("a", sort = False).b.shift()

s
Out[913]: 
0    NaN
1    1.0
2    2.0
3    1.0
4    1.0
5    NaN
6    2.0
7    2.0
8    1.0
9    2.0
Name: b, dtype: float64
idx=s.groupby(df.a).head(1).index
s.loc[idx]=0

看起来你的foo团队并没有达到你想要的目标。你能发布你的样本df的预期输出吗?@Peyman:你是对的,
apply
解决方案没有达到我的预期。这不是因为每个组中第一次出现的
np.nan
应该被0替换。