首页 > 解决方案 > 来自另一个df的具有多个条件的熊猫数据框布尔索引

问题描述

我正在尝试识别 2 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 =

   energy   id
0  power  123
1    gas  456

df2 =

   energy     id
0  power    456
1  power    123

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

df2.loc[(df2['energy'].isin(df['energy'])) & (df2['id'].isin(df['id']))]

因为这将匹配 df2 的 2 行,而我希望只匹配 power / 123

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

希望清楚

标签: pythonpandasdataframe

解决方案


pd.merge(df, df2, on=['id','energy'], how='inner')

推荐阅读