Python 使用来自另一个df的多个条件创建数据帧布尔索引

Python 使用来自另一个df的多个条件创建数据帧布尔索引,python,pandas,dataframe,Python,Pandas,Dataframe,我试图识别两个df之间的行,它们在同一行的某些列中共享相同的值 例如: import pandas as pd df = pd.DataFrame([{'energy': 'power', 'id': '123'}, {'energy': 'gas', 'id': '456'}]) df2 = pd.DataFrame([{'energy': 'power', 'id': '456'}, {'energy': 'power', 'id': '123'}]) df= df2= 因此,我试图从df

我试图识别两个df之间的行,它们在同一行的某些列中共享相同的值

例如:

import pandas as pd
df = pd.DataFrame([{'energy': 'power', 'id': '123'}, {'energy': 'gas', 'id': '456'}])
df2 = pd.DataFrame([{'energy': 'power', 'id': '456'}, {'energy': 'power', 'id': '123'}])
df=

df2=

因此,我试图从df中获取行,其中energy&id与df2中的同一行完全匹配。 如果我这样做,我会得到一个错误的结果:

df2.loc[(df2['energy'].isin(df['energy'])) & (df2['id'].isin(df['id']))]
因为这将匹配df2的2行,而我希望只匹配power/123

如何基于另一个df行使用多个“动态”条件进行布尔索引,并匹配另一个df中相同行的值


希望清楚

看起来像内部合并:
df.merge(df2)
?当然,您可以选择要连接的公共键,看起来像内部合并:
df.merge(df2)
?当然,你可以选择joinYes的公共键。确实,如果你想同时进行标准布尔索引和合并,你需要2行而不是1行,但是效果很好。我想会有另一个选择,但让我们保持这样。感谢这样的工作确实,如果你想做标准布尔索引和合并,你需要2行而不是1行,但它工作得很好,我想会有另一个选择,但让我们保持这样。谢谢
pd.merge(df, df2, on=['id','energy'], how='inner')
df2.loc[(df2['energy'].isin(df['energy'])) & (df2['id'].isin(df['id']))]
pd.merge(df, df2, on=['id','energy'], how='inner')