pandas - Pandas isin 布尔运算符给出错误
问题描述
使用“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'
我做错了什么?
解决方案
您在传递给应用的函数中执行此操作,这样就可以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
推荐阅读
- flutter - 颤振构建运行器注册生成器以在颤动中使用蜂巢数据库时出现问题
- github - 无法更新 github 页面
- swift - 我需要知道如何使用 AVCaptureManualExposureBrackedStillImageSettings 手动设置曝光时间?
- selenium - 使用 selenium 在 UI 中实际上没有执行拖放操作
- xml - Perl 如何从 XML 文件中删除标签?
- android - Unity需要接入华为HMS SDK,包名必须以.HUAWEI结尾
- bash - 当该字符串是bash命令时,如何替换文件中的字符串
- javascript - 为什么在递归中使用 let replace var 更好?
- css - CSS 样式未按预期应用(Haskell 项目)
- c++ - 调用成员函数时,数据成员会自动更改自身