Python中矩阵指定列筛选方法:PCA场景下的Pandas列选择问题
解决PCA数据筛选指定列的问题
嘿,我来帮你搞定这个列筛选的需求!针对你的场景,有两种常用的方法,我都给你列出来,你可以根据自己的习惯选:
方法一:直接用列名筛选(推荐)
这种方法最稳健,哪怕后续数据的列顺序变动,也不会选错列,非常适合固定列名的场景。你只需要把想要的列名放进一个列表,直接传入数据框索引即可:
# 定义要保留的列名列表 target_cols = ["Price", "Earnings/Share", "Market Cap", "EBITDA"] # 筛选列、标准化后生成新DataFrame sp_data = pd.DataFrame(scale(SP[target_cols]), index=SP.Symbol, columns=target_cols)
这样就精准选中了你需要的4列,完全不用关心它们在原数据中的位置,省心又靠谱。
方法二:通过位置索引修改原代码
如果你坚持要修改原来的iloc索引部分,得先确认目标列在原数据中的位置。根据你给出的8列顺序:["Price", "Earnings/Share", "Book Value", "52 week low", "52 week high", "Market Cap", "EBITDA", "Price/Sales"]
这些列对应原SP数据框的索引是3、4、8、9(因为你原来的iloc[:,3:11]是取第3到第10列,左闭右开)。修改后的代码如下:
sp_data = pd.DataFrame(scale(SP.iloc[:, [3,4,8,9]]), index=SP.Symbol, columns=SP.columns[[3,4,8,9]])
⚠️ 注意:这种方法依赖列的位置,如果后续原数据的列顺序调整了,筛选结果就会出错,所以更推荐第一种用列名的方式。
内容的提问来源于stack exchange,提问作者Bai
相关产品推荐
相关产品推荐

