python – 与isin的pandas函数
发布时间:2020-12-20 12:03:53 所属栏目:Python 来源:网络整理
导读:我有一个这样的数据帧: aa bb cc[a,x,y] a 1[b,d,z] b 2[c,e,f] s 3np.nan d 4 我正在尝试创建一个这样的新列: aa bb cc dd[a,y] a 1 True[b,z] b 2 True[c,f] s 3 Falsenp.nan d 4 False 我目前的解决方案是: def some_function(row): if row['bb].isin(
我有一个这样的数据帧:
aa bb cc [a,x,y] a 1 [b,d,z] b 2 [c,e,f] s 3 np.nan d 4 我正在尝试创建一个这样的新列: aa bb cc dd [a,y] a 1 True [b,z] b 2 True [c,f] s 3 False np.nan d 4 False 我目前的解决方案是: def some_function(row): if row['bb].isin(row['aa'])==True: return True return False df['dd'] = df.apply(lambda row: some_function(row),axis=1) 但这会抛出一个错误(“’str’对象没有属性’isin’”,’发生在索引0′) 我怀疑,因为我在检查isin时遗漏了一些东西. 基本上,我需要检查bb的str值是否在列aa中,每个单元格中都有一个列表. 关于如何做到这一点的任何想法? 解决方法
您需要参数列表中的检查成员身份:
df['dd'] = df.apply(lambda x: x.bb in x.aa,axis=1) print (df) aa bb cc dd 0 [a,y] a 1 True 1 [b,z] b 2 True 2 [c,f] s 3 False 编辑: df['dd'] = df.apply(lambda x: (x.bb in x.aa) and (x.cc == 1),axis=1) print (df) aa bb cc dd 0 [a,z] b 2 False 2 [c,f] s 3 False 要么: df['dd'] = df.apply(lambda x: x.bb in x.aa,axis=1) & (df['cc'] == 1) print (df) aa bb cc dd 0 [a,f] s 3 False 编辑: df['dd'] = df.apply(lambda x: x.bb in x.aa if type(x.aa) == list else False,f] s 3 False 4 NaN d 4 False (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |