为了账号安全,请及时绑定邮箱和手机立即绑定

数据帧转换后保留标题

数据帧转换后保留标题

猛跑小猪 2021-11-09 16:15:04
我正在使用带有一些微阵列的 sklearn 和 Pandas,并且我有一个 Pandas DataFrame,其中每一列都已命名。所以我正在对数据框做一些转换,本质上是特征选择。data = pd.read_csv("data.txt")print(data)导致    1007_s_at  1053_at       ...         AFFX-TrpnX-5_at  AFFX-TrpnX-M_at0     3.96932  2.52634       ...                 2.09691          1.991231     4.10452  2.43457       ...                 2.28103          2.064462     3.95308  2.36736       ...                 2.11059          1.806183     3.99712  2.55388       ...                 2.13354          1.919084     3.95279  2.21484       ...                 2.22531          2.03342..        ...      ...       ...                     ...              ...96    3.79560  2.74194       ...                 2.01703          2.0374397    3.79817  2.47422       ...                 2.12385          2.0718898    3.84186  2.59329       ...                 2.16435          1.69897[99 rows x 22283 columns]正如我们所见,每一列都有一个名称。然后我用 VarianceThreshold 方法删除了一些列data = VarianceThreshold(0.04).fit_transform(data)print(data)print("After Variance Threshold data shape: ", data.shape)所以新数据看起来像[[4.1835  2.20952 2.41664 ... 2.21748 2.69197 2.41996] [3.82478 2.2878  1.69897 ... 1.87506 2.09691 2.35411] [4.1503  2.32015 2.35793 ... 2.01284 2.2833  2.15534] ... [3.85576 3.26694 2.71684 ... 2.68305 3.18298 2.83378] [3.25912 2.04922 2.58092 ... 2.0607  2.66932 2.42325] [3.34044 2.24551 2.60097 ... 2.03743 2.31806 2.35984]]After Variance Threshold data shape:  (99, 5002)现在,数据是一个 numpy 数组,我丢失了原始数据帧中保留的每一列的标题。有没有办法让它们与熊猫/numpy?
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

您可以使用get_support获取掩码而不是结果:


In [11]: df = pd.DataFrame([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]], columns=list("ABCD"))


In [12]: df

Out[12]:

   A  B  C  D

0  0  2  0  3

1  0  1  4  3

2  0  1  1  3


In [13]: VarianceThreshold().fit(df).get_support()

Out[13]: array([False,  True,  True, False])


In [14]: df.loc[:, VarianceThreshold().fit(df).get_support()]

Out[14]:

   B  C

0  2  0

1  1  4

2  1  1

在你的例子中:


df.loc[:, VarianceThreshold(0.04).fit(data).get_support()]


查看完整回答
反对 回复 2021-11-09
  • 1 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信