2017-08-21 5 views
1

別の列( 'col_search')の値に依存してpd.DataFrame内の列( 'col_change')の値を変更したいとします。 1回の変更に対しては解決策がありますが、複数の検索値の解決策を探しています。予想通り、単一の値についてリストによるpandas.DataFrameの索引付け

例:を期待ようにマルチ値ため

import numpy as np 
import pandas as pd 
my_array = np.array([[1,2,3,4,5,6,7,8,9,10],[11,22,33,44,55,66,77,88,99,100]]) 
my_df = pd.DataFrame(my_array, columns = ['col_change', 'col_search']) 
my_df.col_change[my_df.col_search == 22] = 'new value' 
print(my_df) 

例は動作しません:「に」演算子は、ここでは動作しません。

import numpy as np 
import pandas as pd 
my_array = np.array([[1,2,3,4,5,6,7,8,9,10],[11,22,33,44,55,66,77,88,99,100]]) 
my_df = pd.DataFrame(my_array, columns = ['col_change', 'col_search']) 
list_of_search = [33, 44, 55] 
my_df.col_change[my_df.col_search in list_of_search] = 'new value' 
print(my_df) 
+0

を使用すると、 'my_df.col_change [my_df.col_search.isin(list_of_search)]に' isin'ないで、変更=「新しいvalue'' – Wen

+0

だけで変更する必要があります[my_df.col_search.isin(list_of_search)] = 'new value' – Vaishali

答えて

0

Pythonでdf.columns.isin

In [1083]: my_df.loc[my_df.col_search.isin([33, 44, 55]), 'col_change'] = 'new value' 

In [1084]: my_df 
Out[1084]: 
    col_change col_search 
0   1   11 
1   2   22 
2 new value   33 
3 new value   44 
4 new value   55 
5   6   66 
6   7   77 
7   8   88 
8   9   99 
9   10   100 
+0

残念ながら、両方のオプションはここでは機能しません。私は既にオプション2をテストしました。 – ConTcoN

+0

@ConTcoNあなたはそれを正しく使用していません。私の編集をチェックしてください。 –

関連する問題