Скопировать первое значение в группе во все строки, где выполняется условие - PullRequest
0 голосов
/ 05 декабря 2018

updated

У меня есть Pandas Dataframe, и я хочу использовать значение из строки прежде при условии

    df = pd.DataFrame(data=[[1, 2],
                        [1, 4],
                        [1, 2],
                        [1, 3],
                        [1, 2],
                        [5, 3],
                        [1, 4]],
                  columns=['A', 'B'])


df.loc[df.A < df.B, 'B'] =  df.B.shift(1)
df.loc[df.A >= df.B, 'B'] =  df.B

вывод:

   A    B
0  1  NaN
1  1  2.0
2  1  4.0
3  1  2.0
4  1  3.0
5  5  3.0
6  1  3.0

но чтоЯ намереваюсь получить следующее:

   A    B
0  1  NaN
1  1  2.0
2  1  2.0
3  1  2.0
4  1  2.0
5  5  3.0
6  1  3.0

так как я могу в основном "записать" результат df.B.shift(1) во фрейм данных, чтобы следующая строка могла использовать его снова?

Если условие выполнено, взять результат из предыдущей строки, если не сохранить значение.

1 Ответ

0 голосов
/ 05 декабря 2018

Я думаю, вы ищете groupby преобразование first:

df['B'] = df.groupby((df['A'] >= df['B']).cumsum())['B'].transform('first')
df
   A  B
0  1  2
1  1  2
2  1  2
3  1  2
4  1  2
5  5  3
6  1  3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...