在pandas DataFrame中搜索列

Lui*_*uis 3 python numpy dataframe pandas

我需要获取pandas DataFrame的列名,其中列与numpy数组中的列匹配.

import numpy as np
import pandas as pd

x = pd.DataFrame( data=[[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]], columns=list('abc') )

y = np.array( x[['b','c']] )
y
Run Code Online (Sandbox Code Playgroud)

y 然后是DataFrame的第二和第三列:

array([[0, 1],
       [1, 0],
       [0, 0],
       [1, 1],
       [1, 0],
       [1, 1]])
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得列名其中yx(在这种情况下b,c)

我正在寻找类似的东西:

x[ x==y ].columns
Run Code Online (Sandbox Code Playgroud)

要么

pd.DataFrame(y).isin(x)
Run Code Online (Sandbox Code Playgroud)

该示例由特征选择问题驱动,并且是从sklearn页面获取的.


我正在使用numpy 1.11.1和pandas 0.18.1.

Div*_*kar 5

这是一种方法NumPy broadcasting-

x.columns[(x.values[...,None] == y[:,None]).all(0).any(1)]
Run Code Online (Sandbox Code Playgroud)