numpy의 where 조건 사용에 관한 질문이 있습니다. 나는 == 연산자를 사용하여 where 조건을 사용할 수 있지만 "다른 문자열의 한 문자열 부분 문자열입니까?"라는 조건을 사용할 수 없습니다.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
출력 :
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'와 같은 팬더 텍스트 기능이 필요합니다 - [docs] (http://pandas.pydata.org/pandas-docs/stable/text.html)를보십시오. 좋은 날! 그리고 내 솔루션을 받아 들일 수 있습니다. 고맙습니다. – jezrael