【发布时间】:2014-09-17 15:54:50
【问题描述】:
假设我有这个数组:
A, B
1, G
2, X
3, F
4, Z
5, I
如果 B 列等于 [X, Y 或 Z] 将 A 列替换为值“T”
我找到了如何更改同一列中的值,但不能跨列,任何帮助将不胜感激。
【问题讨论】:
标签: python pandas comparison multiple-columns
假设我有这个数组:
A, B
1, G
2, X
3, F
4, Z
5, I
如果 B 列等于 [X, Y 或 Z] 将 A 列替换为值“T”
我找到了如何更改同一列中的值,但不能跨列,任何帮助将不胜感激。
【问题讨论】:
标签: python pandas comparison multiple-columns
你可以试试这个:
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 以避免在复制的切片上设置值。
【讨论】:
使用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
【讨论】: