查找方差最高的股票并将其与数据框的第一列交换
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
我有一个数据框,其中包含不同公司的 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