下面是我的数据框架。它有多个股票。我试图从这些数据中找出两件事。
1)如何找到所有股票的最小/最大相对波动率的日期。这意味着具有相应日期的每只股票的最大和最小相对波动率。
Stock Date relativevolatility
0 AA.csv 2012-12-31 0.024419
1 AA.csv 2012-12-28 0.012888
2 AA.csv 2012-12-27 0.026482
3 AA.csv 2012-12-26 0.018423
4 AA.csv 2012-12-24 0.013994
5 AA.csv 2012-12-21 0.017422
6 AA.csv 2012-12-20 0.011541
7 AA.csv 2012-12-19 0.026316
8 AA.csv 2012-12-18 0.018120
9 AA.csv 2012-12-17 0.019406
10 AA.csv 2012-12-14 0.018454
11 AA.csv 2012-12-13 0.017411
12 AA.csv 2012-12-12 0.012673
13 AA.csv 2012-12-11 0.019699
14 AA.csv 2012-12-10 0.016442
15 AA.csv 2012-12-07 0.016403
16 AA.csv 2012-12-06 0.014011
17 AA.csv 2012-12-05 0.022340
18 AA.csv 2012-12-04 0.016677
19 AA.csv 2012-12-03 0.011862
20 AA.csv 2012-11-30 0.015458
21 AA.csv 2012-11-29 0.017794
22 AA.csv 2012-11-28 0.030102
23 AA.csv 2012-11-27 0.016888
24 AA.csv 2012-11-26 0.012019
25 AA.csv 2012-11-23 0.010791
26 AA.csv 2012-11-21 0.012092
27 AA.csv 2012-11-20 0.020544
28 AA.csv 2012-11-19 0.016857
29 AA.csv 2012-11-16 0.027044
... ... ...
70666 ZION.csv 2012-02-15 0.018929
70667 ZION.csv 2012-02-14 0.016287尝试#1 df2.groupby('Date',‘Stock’)‘相对进化’.sum().idxmax()
这给了我一个时间/股票,但只针对一只股票,我甚至不确定我是否获得了该股票的最大相对波动率。
尝试#2 new.groupby('Stock')'relativevolatility'.agg(pd.np.min,pd.np.max)
这为我提供了股票的所有最小/最大值,但我不知道如何添加一列来表示每个股票的最小值和最大值出现的时间。
问题#1
如何打印一个表格,给出所有股票的最小/最大相对波动率,以及股票最小/最大波动发生的日期?
问题#2
如何才能找到所有股票一周中每一天的平均相对波动率?
发布于 2017-11-16 00:13:33
您需要使用带有idxmin的idxmax,然后使用concat
#if necessary
#df['Date'] = pd.to_datetime(df['Date'])
df1 = df.loc[df.groupby('Stock')['relativevolatility'].idxmin()].set_index('Stock')
df2 = df.loc[df.groupby('Stock')['relativevolatility'].idxmax()].set_index('Stock')
df = pd.concat([df1, df2], axis=1, keys=('min','max'))
df.columns = df.columns.map('_'.join)
print (df)
min_Date min_relativevolatility max_Date max_relativevolatility
Stock
AA.csv 2012-11-23 0.010791 2012-11-28 0.030102
ZION.csv 2012-02-14 0.016287 2012-02-15 0.018929和具有聚合mean的weekday_name
df = (df.groupby(['Stock', df['Date'].dt.weekday_name])['relativevolatility']
.mean()
.reset_index(name='means'))
print (df)
Stock Date means
0 AA.csv Friday 0.016923
1 AA.csv Monday 0.016428
2 AA.csv Thursday 0.017448
3 AA.csv Tuesday 0.018386
4 AA.csv Wednesday 0.020324
5 ZION.csv Tuesday 0.016287
6 ZION.csv Wednesday 0.018929https://stackoverflow.com/questions/47243635
复制相似问题