我有一个这样的数据框:

A B C D
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4


而且我正在编写一段代码来识别我需要的列索引。

RequiredColumns = (skb.get_support(indices=True))
Out[64]: array([ 0,  1], dtype=int64)


我将仅采用这些列并将其添加到新的数据框中。

为此,我编写了这段代码

FeatureSelected_DataFrame = pd.DataFrame()

for i in RequiredColumns:
    ColIndex = i
    ReqColumn = X[[i]]
    FeatureSelected_DataFrame = FeatureSelected_DataFrame.append(ReqColumn)


但这是我得到的输出:
FeatureSelected_DataFrame

A   B
1   NaN
1   NaN
NaN 2
NaN 2


我的预期输出是-

A B
1 2
1 2

最佳答案

我认为您可以将iloc位置选择的列附加到列表中,然后再添加concat

L = []
RequiredColumns = np.array([0,1])
for i in RequiredColumns:
    ReqColumn = X.iloc[:, i]
    L.append(ReqColumn)

FeatureSelected_DataFrame = pd.concat(L, axis=1)
print (FeatureSelected_DataFrame)
   A  B
0  1  2
1  1  2
2  1  2
3  1  2


更好的非循环解决方案是:

RequiredColumns = np.array([0,1])
df = X.iloc[:, RequiredColumns]
print (df)
   A  B
0  1  2
1  1  2
2  1  2
3  1  2

09-30 10:23