Python Pandas Если значение в столбце B = равно [X, Y, Z], замените столбец A на "T"

Скажем, у меня есть этот массив:

A, B
1, G
2, X
3, F
4, Z
5, I

Если столбец B равен [X, Y или Z], замените столбец A значением "T"

Я нашел, как изменять значения внутри одного столбца, но не поперек, любая помощь будет наиболее оценена.

Ответ 1

Вы можете попробовать следующее:

import pandas as pd
df = pd.DataFrame({
        'A': [1, 2, 3, 4, 5],
        'B': ['G', 'X', 'F', 'Z', 'I']
     })
df.ix[df.B.isin(['X','Y','Z']), 'A'] = 'T'
print df

Вывод:

   A  B
0  1  G
1  T  X
2  3  F
3  T  Z
4  5  I

Не забудьте использовать ix или loc, чтобы избежать установки значений на скопированном фрагменте.

Ответ 2

Используйте isin и loc, чтобы установить значение:

In [138]:

df.loc[df.B.isin(['X','Y','Z']),'A']='T'
df
Out[138]:
   A  B
0  1  G
1  T  X
2  3  F
3  T  Z
4  5  I

Вы также можете использовать np.where:

In [140]:

df['A'] = np.where(df.B.isin(['X','Y','Z']),'T', df['A'])
df
Out[140]:
   A  B
0  1  G
1  T  X
2  3  F
3  T  Z
4  5  I