gpt4 book ai didi

python - 当值大于某个值时如何返回第一个索引

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:31 25 4
gpt4 key购买 nike

这是为了模拟结构化投资中的“淘汰”情况。一般分为三只股票:股票A;库存B;股票C,每月观察其价格是否高于第一个月价格(KO水平)的100%。

基本数据框如下所示:

           Stock-A Stock-B Stock-C
2010-01-01 10 20 40
2010-02-01 9.5 18 31
2010-03-01 10.5 22 39
2010-04-01 11.5 23 36

如果其中一个价格高于 KO 水平,该函数应返回月份并且不再需要监控价格。

例如,股票 A 在 2010-03-01 跨越 KO 级别,因此该函数应将其标记为成功的“淘汰”股票并返回日期,即 2010-03-01 .

如果有一只股票永远不会越界,该函数应该遍历结束并将其作为未淘汰的股票返回。我怎样才能做到这一点?

最佳答案

这是我的尝试,有一些假设(另外,对此持保留态度:我并没有声称自己是 Pandas 专家,只是认为这将是一个值得研究的有趣问题)

df = pandas.DataFrame([
{'date': '2010-01-01', 'stock_a': 10, 'stock_b': 20, 'stock_c': 30},
{'date': '2010-01-02', 'stock_a': 9.5, 'stock_b': 18, 'stock_c': 31},
{'date': '2010-03-01', 'stock_a': 10.5, 'stock_b': 22, 'stock_c': 39},
{'date': '2010-04-01', 'stock_a': 11.5, 'stock_b': 23, 'stock_c': 36},
])
# Assuming you want the first chronological record of such an event
df = df.sort_values(['date', 'stock_a', 'stock_b', 'stock_c'])
df2 = pandas.concat([
df['stock_a'] > df['stock_a'][0],
df['stock_b'] > df['stock_b'][0],
df['stock_c'] > df['stock_c'][0],
], axis=1)
df2['date'] = True
# At this point columns stock_{a,b,c} are populated with NaN in place where the value
# was less than the first observation
df3 = df[df2].query('stock_a == stock_a & stock_b == stock_b & stock_c == stock_c')

if not df3.empty:
print df3.iloc[[0]]
print 'No match'

关于python - 当值大于某个值时如何返回第一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44615866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com