Заменить текущую строку данными предыдущей, если значение определенного столбца в текущей строке равно 1 - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть pandas фрейм данных, и я хочу заменить текущую строку данными на предыдущую строку, если значение определенного столбца в текущей строке равно 1, но пока не увенчалось успехом. Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Это можно сделать так:

#B is the column that lets you know if the row should change or not
for i in range(1, len(df)):
    if df.loc[i, 'B'] == 1:
        df.loc[i, :] = df.loc[i-1, :]
0 голосов
/ 18 апреля 2020

Это можно сделать просто используя оператор смещения и присваивание. Если b является индексом, к которому мы хотим подготовить условие, то мы создаем условие на основе b first

import pandas as pd

df = pd.DataFrame({
    'a':[1, 2, 3, 4, 5, 6],
    'b':[0, 1, 1, 0, 0, 1],
    'c':[7, 8, 9, 0, 1, 2]}
)

# this is our condition (which row we're changing)
index_to_change = df['b'] == 1

# this is a list of columns we want to change
cols_to_change = ['a', 'c']

df.loc[index_to_change, cols_to_change] = df[cols_to_change].shift(1).loc[index_to_change]

Вывод:

In []: df                                                                                                                                                       
Out[]: 
     a  b    c
0  1.0  0  7.0
1  1.0  1  7.0
2  2.0  1  8.0
3  4.0  0  0.0
4  5.0  0  1.0
5  5.0  1  1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...