私がこの配列を持っているとしましょう:
A, B
1, G
2, X
3, F
4, Z
5, I
列Bが[X、Y、またはZ]に等しい場合は、列Aを値「T」に置き換えます。
同じ列内で値を変更する方法を見つけましたが、全体では変更しません。助けていただければ幸いです。
あなたはこれを試すことができます:
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