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
Ответ 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