2016-11-21 76 views
2

我有一个训练数据框已被清除,并具有原始测试数据框所具有的变量子集。我想创建一个新的测试数据框,只保留训练数据框的列。Pandas使用训练数据框列选择测试数据帧列

例如,

train.columns=['A','D','E','G'] 

test.columns=['A','B','C','D','E','F','G'] 

如何创建新的test_df是只保留train.columns?

+0

的工作,谢谢! – yogz123

+0

@ ctj232如果没有至少15的代表,他们无法赞成。如果你提出了他们的问题,他们会有必要的代表让你高兴。 – piRSquared

+0

好点,谢谢! @piRSquared – ctj232

回答

3

假设每个DataFrame具有相同名称的列,那么你可以简单地从测试DataFrame使用培训DataFrameDataFrame.columns属性和[]语法选择列。

这里是一个工作示例:

$ train = pd.DataFrame([[0,1,2,3]],columns=['A','D','E','G']) 
$ train 
    A D E G 
0 0 1 2 3 

$ test = pd.DataFrame([[0,1,2,3,4,5,6]],columns=['A','B','C','D','E','F','G']) 
$ test 
    A B C D E F G 
0 0 1 2 3 4 5 6 

$ test_df = test[train.columns] 
$ test_df 
    A D E G 
0 0 3 4 6 
+0

是的,工作!谢谢!如果它是一个numpy数组而不是数据框,你会知道如何做同样的事情吗? – yogz123

+0

如果你仍然可以访问'DataFrame',那么它就像'test_df.values'一样简单,但我不确定如何从'ndarray'直接做到这一点。如果你真的需要做后者,那么我认为你仍然可以按照[文档](https://docs.scipy.org/doc/numpy/reference/arrays.indexing)使用'[]'索引语法。 HTML)。然而,如果你想根据'str'类标签选择列,那么我认为你应该继续使用'DataFrame'而不是'ndarray'。虽然,也许我只是想念你的问题的背景。 – ctj232

相关问题