df1_data = {'id' :{0:'101',1:'102',2:'103',3:'104',4:'105'},
'sym1' :{0:'abc',1:'pqr',2:'xyz',3:'mno',4:'lmn'}}
df1 = pd.DataFrame(df1_data)
print df1
id sym1
0 101 abc
1 102 pqr
2 103 xyz
3 104 mno
4 105 lmn
从这个数据框中,我想在其他四个数据帧列中检查列sym1是否可用?
四种不同的数据帧:
df2_data = {'sym2' :{0:'abc',1:'xxx',2:'xyz',3:'mno'},
'name' :{0:'a',1:'b',2:'c',3:'d'}}
df2 = pd.DataFrame(df2_data)
print df2
df3_data = {'sym2' :{0:'abc',1:'xxx',2:'xyz',3:'mno'},
'name' :{0:'h',1:'i',2:'k',3:'l'}}
df3 = pd.DataFrame(df2_data)
print df3
df4_data = {'sym2' :{0:'abc',1:'xxx',2:'xyz',3:'mno'},
'name' :{0:'p',1:'q',2:'r',3:'s'}}
df4 = pd.DataFrame(df4_data)
print df4
df5_data = {'sym2' :{0:'abc',1:'xxx',2:'xyz',3:'mno'},
'name' :{0:'w',1:'x',2:'y',3:'z'}}
df5 = pd.DataFrame(df5_data)
print df5
在数据帧df2中可用的列sym2中,df3,df4,df5可以包含相同的符号或者可以不包含相同的符号.我的意图是检查df2,df3,df4,df5数据帧sym2列值中是否可用的sym1列值?
预期产量 –
id sym1
0 102 pqr
1 105 lmn
结论-
符号pqr和lmn在数据帧df2,df3,df4和df5的sym2列中不可用.
解决方法:
>使用isin检查df1.sym1的每个元素是否在其他可迭代中
>使用pd.concat将所有其他数据帧串起来
df1[~df1.sym1.isin(pd.concat([df2, df3, df4, df5]).sym2)]
id sym1
1 102 pqr
4 105 lmn
numpy变种,快3倍
df1[~df1.sym1.isin(np.concatenate([d.sym2.values for d in [df2, df3, df4, df5]]))]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。