web-dev-qa-db-ja.com

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」に置き換えます。

同じ列内で値を変更する方法を見つけましたが、全体では変更しません。助けていただければ幸いです。

12
Tristan Forward

あなたはこれを試すことができます:

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を使用することを忘れないでください。

15
YS-L

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
5
EdChum