查找方差最高的股票并将其与数据框的第一列交换

Find stock with highest variance and swap it with first column of dataframe

我有一个数据框,其中包含不同公司的 m 系列股票价格,如下所示:

Date  Stock 1   Stock 2  Stock 3 ...  Stock m
1      100       200      300    ...   500
2      500       300      200    ...   100
:       :         :        :     ...    :
n      200       300      400    ...   100

我需要做的是找出 m 只股票中哪只股票的 方差 最高,然后将其与 Stock 1 的条目交换。假设在上面的例子中Stock 3是方差最大的那个,那么最后的输出应该是:

Date  Stock 3   Stock 2  Stock 1 ...  Stock m
1      300       200      100    ...   500
2      200       300      500    ...   100
:       :         :        :     ...    :
n      400       300      200    ...   100

为了找到方差最高的列,我尝试计算:

print(max(df.var()))

但是,这只会产生差异量而不会打印股票代码。我该如何解决这个问题?

您可以使用 .insert() for inserting column at the specified position after you get the locations from .idxmax() and Index.get_loc():

col = df.set_index('Date').var().idxmax()   # get column name of max var

from_pos = df.columns.get_loc(col)          # get location of column with max var

stock1_col = df.columns[1]                  # get column name of first stock
stock1 = df.pop(stock1_col)                 # take out column of first stock

df.insert(1, col, df.pop(col))         # insert column of max var to the original position of first stock
df.insert(from_pos, stock1_col, stock1)      # insert first stock to the original position of column with max var

结果:

Stock m是样本数据中方差最大的列)

print(col)

'Stock m'



print(df)

  Date  Stock m  Stock 2  Stock 3  Stock 1
0    1      500      200      300      100
1    2      100      300      200      500
2    n      100      300      400      200