【发布时间】:2017-08-04 16:05:31
【问题描述】:
我有以下数据框:
df
>>> TSLA MSFT
2017-05-15 00:00:00+00:00 320 68
2017-05-16 00:00:00+00:00 319 69
2017-05-17 00:00:00+00:00 314 61
2017-05-18 00:00:00+00:00 313 66
2017-05-19 00:00:00+00:00 316 62
2017-05-22 00:00:00+00:00 314 65
2017-05-23 00:00:00+00:00 310 63
max_idx = df.idxmax() # returns index of max value
>>> TSLA 2017-05-15 00:00:00+00:00
>>> MSFT 2017-05-16 00:00:00+00:00
max_value = df.max() # returns max value
>>> TSLA = 320
>>> MSFT = 69
def pct_change(first, second): # pct chg formula
return (second-first) / first*100.00
我想获得max_value 和从max_idx (df.loc[max_idx:]) 开始的两个列的每个连续值之间的百分比变化。只是为了确保,
百分比变化不低于 5%。
Example:
for TSLA: 320 with 319 = 2% for MSFT: 69 with 61 = 4%
320 with 314 = 4% 69 with 66 = 5%
320 with 313 = 5% 69 with 62 = 10%
编辑:如果您觉得难以回答,我会很高兴仅参考我将用于此类操作的函数或方法类型。
注意:我只想确保百分比变化不低于 5%。
【问题讨论】:
-
你能给出你预期的输出吗?我也没有看到所有这些数字都匹配。例如不应该
(69-61)/61 == 0.101? -
% 更改仅用于示例目的,我只是想要如何执行此类操作的方式,输出可以是任何东西,只要它承认 % 更改低于 5% @Psidom
-
@JohnGalt 仅用于示例目的。
-
做
100.*(1 - df/df.max()),然后用df.idxmax()限制? -
所以你希望答案类似于
TSLA: True, MSFT: False。
标签: python pandas numpy dataframe