有一个关于使用numpy的where条件的问题。我可以使用带有==运算符的where条件,但不能使用带有“一个字符串是另一个字符串的子字符串吗?”你知道吗
代码:
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
为什么努比。哪里在上述情况下,条件不起作用。 本以为史密斯一家有价值观 是的 不 是的 不 不
但没有得到这个结果。如上所示的输出都是N,N,N,N,N 而不是在df['name']中使用条件“Smith”(也尝试了str(df['name'])。find(“Smith”)>;-1),但这也不起作用。你知道吗
你知道哪里不对,或者我能做些什么不同的事吗?你知道吗
我认为布尔掩码需要^{} :
或^{} :
如果要使用
in
处理标量,则需要apply
:此解决方案速度更快,但如果列
name
中的NaN
不起作用。np.where("Smith" in df['name'],'Y','N' )
的行为取决于df['name']
产生什么-我假设是某种numpy数组。其余的是numpy
in
是一个完整的字符串测试,包括一个列表和一个字符串数组。这不是子串测试。你知道吗np.char
有一堆函数将字符串函数应用于数组的元素。它们大致相当于np.array([x.fn() for x in arr])
。你知道吗或使用
find
:pandas
.str
方法似乎做了类似的事情;将字符串方法应用于数据系列的元素。你知道吗相关问题 更多 >
编程相关推荐