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替换。