Python 如何通过另一个数据帧中的键过滤数据帧中的列
我的第一个数据帧是Python 如何通过另一个数据帧中的键过滤数据帧中的列,python,pandas,Python,Pandas,我的第一个数据帧是 obj1 obj2 obj3 01 02 03 02 03 04 另一个数据帧是: col1 col2 col3 obj1 M N obj2 M T obj3 M N 我只想要第一个数据帧中标记为的列 {'col2':M, 'col3':N} 想要的结果是 obj1 obj3 01 03 02 04 我似乎无法以一种体面的方式实现这一点。一个想法是将字典转换为一行DataFrame,因为上没有参数,它通过所有列
obj1 obj2 obj3
01 02 03
02 03 04
另一个数据帧是:
col1 col2 col3
obj1 M N
obj2 M T
obj3 M N
我只想要第一个数据帧中标记为的列
{'col2':M, 'col3':N}
想要的结果是
obj1 obj3
01 03
02 04
我似乎无法以一种体面的方式实现这一点。一个想法是将字典转换为一行
DataFrame
,因为上没有参数,它通过所有列名称的交集进行合并(在helper DataFrame中通过字典的键):
或与听写理解一起使用:
vals = df2.query(' & '.join(['{}=={}'.format(i,repr(j))
for i, j in d.items()]))['col1']
然后按和过滤,:
表示所有行:
df = df1.loc[:, df1.columns.isin(vals)]
print (df)
obj1 obj3
0 01 03
1 02 04
df = df1.loc[:, df1.columns.isin(vals)]
print (df)
obj1 obj3
0 01 03
1 02 04