大熊猫:shift(1)组中的所有值,但第一个值(每组中的第一个除外)应为0

时间:2018-08-25 19:49:22

标签: python pandas pandas-groupby

给出以下df:

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))

因为我只想将 first np.nan(每个组中的 )替换为0

1 个答案:

答案 0 :(得分:2)

这是您需要的吗?

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