找出方差最高的股票列并与DataFrame的Stock 1列交换的实现问题
实现方法
第一步:获取方差最高的股票列名
你之前用max(df.var())只能拿到最大值,用idxmax()方法可以直接返回最大值对应的列名,同时注意排除日期列参与方差计算:
# 仅对股票列计算方差,返回方差最高的列名 max_var_stock = df.drop('Date', axis=1).var().idxmax()
第二步:交换最高方差列与Stock 1的位置
直接调整列名列表的顺序再赋值给DataFrame即可,Date列会保持在第一位不动:
# 获取当前列名列表 col_list = df.columns.tolist() # 分别定位Stock 1和最高方差列的索引 stock1_pos = col_list.index('Stock 1') max_var_pos = col_list.index(max_var_stock) # 交换两个列的位置 col_list[stock1_pos], col_list[max_var_pos] = col_list[max_var_pos], col_list[stock1_pos] # 重新设置DataFrame的列顺序 df = df[col_list]
注意事项
- 若你的股价列存在空值,可在计算方差时添加
skipna=True参数(pandas默认已开启,无需额外配置) - 若股票列存在非数值类型数据,计算方差时会自动过滤,建议提前确认所有股价列均为int/float类型
内容的提问来源于stack exchange,提问作者Brayden Clarkson
相关产品推荐
相关产品推荐

