使用'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'
我做错了什么?
答案 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