關於使用numpy的地方有什麼問題。我可以使用==運算符的條件,但不能在where條件中使用「是另一個字符串的一個字符串子字符串?」Python numpy哪裏的功能行爲
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,N,N,N,N 而不是在df ['name']中使用條件「Smith」(也試過str(df ['name'])。find(「Smith」)> -1),但這也不起作用。
任何想法什麼是錯的,或者我可以做些什麼不同?
是jezrael。你的答案確實有用,並且非常有幫助。 –
你還可以讓我知道爲什麼np.where()與==一起使用,但不能與str函數中的字符串find或substr一起使用。 –
我認爲主要原因是如果使用'find'或'substr'它只能與標量一起使用,但在熊貓中是使用數組。所以需要像'str.find'或'str.startswith'這樣的熊貓文本函數 - 參見[docs](http://pandas.pydata.org/pandas-docs/stable/text.html)。美好的一天!你可以接受我的解決方案。謝謝。 – jezrael