Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过另一个数据帧中的键过滤数据帧中的列_Python_Pandas - Fatal编程技术网

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