如何仅保留某些列,并根据其他数据框中的条件删除其余列

时间:2020-08-08 01:05:49

标签: python pandas dataframe indexing

这是我的新手,尝试学习多变量线性回归分析,这里有10个变量。我正在尝试仅使用VIF小于5的列来更新/创建一个新的数据框。

这是我用来使用VIF值创建DataFrame的代码。 X1是DataFrame,其中包含相同变量的数据


vif =pd.DataFrame()
vif['Variane inflation factor'] = [variance_inflation_factor(X1.values, i) for i in range(X1.shape[1])]
vif['feature names'] = X1.columns


output:
    Variance inflation factor   feature names
0   314.550195                 const
1   9.807879                   gdp_growth
2   2.430057                   gross_capital_formation
3   25.759263                  pop_growth
4   26.174368                  birth_rate
5   1.633079                   broad_money_growth
6   2305.724583                final_consum_growth
7   32.527332                  gov_final_consum_growth
8   3.796420                   gross_cap_form_growth
9   2129.093634                hh_consum_growth
10  2.800008                   unemployment

因此,我试图找出如何使用VIF值小于5的变量来创建新的DataFrame的方法。将df.loc与实际的变量名一起使用可能会起作用,但想扩展这会带来更多变量的问题,而使用实际变量名可能会很困难。 感谢帮助!

1 个答案:

答案 0 :(得分:0)

尝试一下。无需使用loc根据列中的值过滤数据框-

vif_filtered = vif[vif['Variane inflation factor']<5]

如果要基于这些功能过滤数据框X1,则-

cols = list(vif_filtered['feature_names'].unique())
X1_filtered = X1[cols]