numpyのwhere条件の使用に関する質問があります。私はwhere ==演算子でconditionを使用することはできますが、 "where is another string?"という文字列を使用することはできません。Python numpy where関数の動作
CODE:
import pandas as pd
import datetime as dt
import numpy as np
data = {'name': ['Smith, Jason', 'Bush, Molly', 'Smith, Tina',
'Clinton, Jake', 'Hamilton, Amy'],
'age': [42, 52, 36, 24, 73],
'preTestScore': [4, 24, 31, 2, 3],
'postTestScore': [25, 94, 57, 62, 70]}
df = pd.DataFrame(data, columns = ['name', 'age', 'preTestScore',
'postTestScore'])
print "BEFORE---- "
print df
print "AFTER----- "
df["Smith Family"]=np.where("Smith" in df['name'],'Y','N')
print df
OUTPUT:
BEFORE-----
name age preTestScore postTestScore
0 Smith, Jason 42 4 25
1 Bush, Molly 52 24 94
2 Smith, Tina 36 31 57
3 Clinton, Jake 24 2 62
4 Hamilton, Amy 73 3 70
AFTER-----
name age preTestScore postTestScore Smith Family
0 Smith, Jason 42 4 25 N
1 Bush, Molly 52 24 94 N
2 Smith, Tina 36 31 57 N
3 Clinton, Jake 24 2 62 N
4 Hamilton, Amy 73 3 70 N
numpy.where条件は上記の場合には動作しませんなぜ。 は値 N Y N N
Y を持つようにスミスファミリーを予想していた。しかし、その出力を取得できませんでした。上記の出力はすべてN、N、N、N、Nです df ['name']で条件 "Smith"を使用する代わりにstr(df ['name'])を試してみてくださいfind( "Smith")> -1)でも動作しませんでした。
何が間違っているのか、何が違うのですか?
はいjezrael。あなたの答えはうまくいき、とても役に立ちました。 –
np.where()が==では動作するが、str関数ではstring findまたはsubstrと一緒に動作しない理由も教えてください。 –
主な理由は、 'find'や' substr'を使うとスカラーだけで動作しますが、パンダでは配列が使われていると思います。したがって、 'str.find'や' str.startswith'のようなpandasのテキスト関数が必要です。 - [docs](http://pandas.pydata.org/pandas-docs/stable/text.html)を参照してください。いい日!そして私の解決策を受け入れることができます。ありがとうございました。 – jezrael