pandas: shift (1) все значения в группе, кроме первого (в каждой группе), которое должно быть 0 - PullRequest
0 голосов
/ 25 августа 2018

Учитывая следующее 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 голосов
/ 25 августа 2018

Это то, что вам нужно?

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...