Как сделать операции над столбцом Dataframe панды на основе условия в другом столбце - PullRequest
3 голосов
/ 21 июня 2019

например:

   A  B
1  3  0
2  4  0
3  6  1
4  8  0

Я хотел бы знать, есть ли простой способ добавить, например, 10 к значению столбца A, когда в B есть 1.

Я хотел бы получить вывод df, как показано ниже.

   A  B
1  3  0
2  4  0
3  16 1
4  8  0

Я нашел что-то вроде строки кода ниже, но этот заменил 6 на 1, я хотел бы использовать это 6сделать некоторые операции над ним.

PS.простите за мой английский

df.loc[df['B'] == 1, 'A'] = 1

Ответы [ 3 ]

3 голосов
/ 21 июня 2019

Вы рядом, используйте 10 с +=:

#short version
df.loc[df['B'] == 1, 'A'] += 10
#long version
#df.loc[df['B'] == 1, 'A'] = 10 + df.loc[df['B'] == 1, 'A']
print (df)
    A  B
1   3  0
2   4  0
3  16  1
4   8  0
1 голос
/ 21 июня 2019

Одним из возможных решений является определение функции с двумя параметрами:

def cond_func(a,b):
    if b = 1:
        return a + 10
    else:
        return a

Затем применяется к каждой строке в кадре данных

df['A'] = df.apply(lambda x: cond_func(x['A'], x['B'], axis=1)
1 голос
/ 21 июня 2019

с использованием np.where

df['A'] = np.where(df['B'] == 1,df['A'] + 10, df['A'])

выход

    A  B
1   3  0
2   4  0
3  16  1
4   8  0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...