我有两个数据框
df
包含头部看起来像的原始数据(这有几千条记录):
0 Floor Dept .....more fields
1 1 Kitchen
2 1 Electrical
3 2 DIY
4 3 Music
validation
这是一个明确的列表,其中哪个部门在哪个楼层
Floor Dept
G Food
1 Kitchen
1 Electrical
1 Toys
2 Electrical
3 Music
有没有办法使用validation
数据框来检查右侧部门是否位于df
的右侧?使用两个valadation列将用于检查2 df列。
所以它会在df
像厨房在3楼(实际上是在1楼)时发现错误
非常感谢
答案 0 :(得分:2)
您可以对数据帧进行特征化并进行isin
检查。
val = validation.apply(tuple, 1).values
if ~df[['Floor', 'Dept']].apply(tuple, 1).isin(val).all():
print('Invalid Entries')
如果你只是想获得一个布尔掩码,那么应该这样做:
mask = df[['Floor', 'Dept']].apply(tuple, 1).isin(val)
如果validation
的索引中有Floor
,请在apply
之前重置。
val = validation.reset_index().apply(tuple, 1).values
答案 1 :(得分:1)
如果验证看起来像我首先
validation = validation.reset_index()
将索引放入列中。然后,如果我的问题正确,请尝试合并df和验证
df_validation = pd.merge(validation,df, on=["Floor","Dept"])
尝试内部,左侧和右侧连接以获得最佳表示。这对你有帮助吗?