熊猫isin布尔运算符给出错误

时间:2018-08-16 17:50:56

标签: pandas

使用'isin'布尔运算符时出现错误:

def rowcheck(row):
 return row['CUST_NAME'].isin(['John','Alan'])

我的数据框有CUST_NAME列。所以我用:

df['CUSTNAME_CHK'] = df.apply (lambda row: rowcheck(row),axis=1)

我得到:

'str' object has no attribute 'isin'

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您正在内部传递要应用的函数中执行此操作,因此row['CUST_NAME']保留特定单元格的值(它是字符串)。没有isin方法的字符串。此方法属于pd.Series,而不是字符串。

如果您确实要使用apply,请在这种情况下使用np.isin

def rowcheck(row): 
    return pd.np.isin(row['CUST_NAME'], ['John','Alan'])

@ juanpa.arrivilaga注意到,isin在这种情况下效率不高,因此建议直接使用运算符in

return row['CUST_NAME'] in ['John','Alan']

请注意,您可能不需要apply。您可以直接使用pd.Series.isin。例如,

df = pd.DataFrame({'col1': ['abc', 'dfe']})


col1
0   abc
1   dfe

您可以做到的

df.col1.isin(['abc', 'xyz'])

0     True
1    False
Name: col1, dtype: bool