我需要获取 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
y 然后有来自 DataFrame 的第二和第三列:
array([[0, 1],
       [1, 0],
       [0, 0],
       [1, 1],
       [1, 0],
       [1, 1]])

如何获取 yx 中的列名? (在这种情况下 b c )

我正在寻找类似的东西:
x[ x==y ].columns

或者
pd.DataFrame(y).isin(x)

该示例受特征选择问题的启发,取自 the sklearn page

我正在使用 numpy 1.11.1 和 Pandas 0.18.1。

最佳答案

这是 NumPy broadcasting 的一种方法 -

x.columns[(x.values[...,None] == y[:,None]).all(0).any(1)]

关于python - 在 Pandas DataFrame 中搜索列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40596306/

10-14 16:07
查看更多