2017-08-16 12 views
3

これまで慣れていたよりも複雑なクエリであるすべての値を見つけることを試みています。私は何百万という価値の価値を潜在的に変えることになるでしょう。したがって、これらの条件を満たす行を見つける最も効率的な方法とその価値を変える方法は本当に役に立ちます。私がやろうとしている何文字列照合とPandasのブール値再割り当て

は次のとおりです。

import pandas as pd 

example = pd.DataFrame({'a': ['9+'], 
         'b': [False]}) 

# If example['a'] contains a '9' or a '10' AND example['b'] is 'False' then change example['a'] to '8' 

答えて

2

我々はPandas boolean indexingを使用することができます。

In [126]: example 
Out[126]: 
    a  b 
0 9+ False 
1 10- False 
2 9 True 
3 1 True 
4 2 False 

In [127]: example.loc[example['a'].str.contains('9|10') & ~example['b'], 'a'] = '8' 

In [128]: example 
Out[128]: 
    a  b 
0 8 False 
1 8 False 
2 9 True 
3 1 True 
4 2 False 
0

あなただけdf.apply()を使用することができませんでしたか?

def get_new_a(x): 
    if ('9' in x.a or '10' in x.a) and x.b == False: 
     return '8' 
    else: 
     return x.a 

example['a_2'] = example.apply(get_new_a, axis=1) 

だからあなたのデータフレームは、次のようになります。

a  b a_2 
0 9+ False 8 
関連する問題