Python Pandas如果B列中的值=等于[X,Y,Z],则用“T”替换A列

时间:2014-09-17 15:54:51

标签: python pandas comparison multiple-columns

说我有这个数组:

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

如果B列等于[X,Y或Z],则用值“T”替换A列

我已经找到了如何更改同一列中的值但不能更改,我们非常感谢任何帮助。

2 个答案:

答案 0 :(得分:15)

你可以试试这个:

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

请务必使用ixloc来避免在复制的切片上设置值。

答案 1 :(得分:5)

使用isinloc设置值:

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