изменение нескольких столбцов на основе других условий столбцов - PullRequest
0 голосов
/ 30 октября 2018
A    B  C   D   E   F    G   H  I   J
1   22  2   7   8   1   22  2   7   8
1   71  5   53  50  1   71  5   5   5
0   3   6   2   2   0   4   6   2   2
1   61  51  3   50  1   61  5   3   2
0   52  2   2   4   0   6   2   2   4
1   2   1   51  4   1   41  1   5   4
0   1   4   2   4   0   40  4   2   4
0   50  5   2   7   0   50  5   2   7

Допустим, у меня есть выше датафрейм Я хочу изменить значения столбцов F на I на 55, если столбец B == 51 или 52, 50. Я хочу повторить это для других столбцов, таких как C, E. Это код, который я написал в пандах ниже.

df.loc[(df['B'] == 50) | (df['B'] == 51) | df['B'] == 50) | (df['C'] == 51), ['F', 'G', 'H', 'I' ]] = 55

это не работает.

1 Ответ

0 голосов
/ 30 октября 2018

iiuc, ты имеешь в виду вот что:

df.loc[df['B'].isin([50, 51, 52]) | df['C'].isin([50, 51, 52]), ['F', 'G', 'H', 'I']] = 55

Edit:

Для более длинного списка поисковых столбцов вы можете использовать

luc = ['B', 'C', 'E', 'F']
df.loc[df[luc].isin([50, 51, 52]).any(axis=1), ['F', 'G', 'H', 'I']] = 55

(спасибо @jezrael за указание на метод прямого доступа any)

или

df.loc[np.any(df[luc].isin([50, 51, 52]), axis=1), ['F', 'G', 'H', 'I']] = 55
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...