簡體   English   中英

在pandas DataFrame中搜索列

[英]Search for columns in a pandas DataFrame

我需要獲取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的列名? (在這種情況下bc

我正在尋找類似的東西:

x[ x==y ].columns

要么

pd.DataFrame(y).isin(x)

該示例由特征選擇問題驅動,並且是從sklearn頁面獲取的


我正在使用numpy 1.11.1和pandas 0.18.1。

這是NumPy broadcasting的一種方法 -

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

也許這個?

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']] )

for yj in y.T:
    for xj in x:
        if (all(x[xj] == yj)):
            print(xj)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM