我有一个数据集(pd.DataFrame),看起来有点像这样:
date 0
2015 Q4 -1.0
2016 Q1 0.8
2016 Q2 0
2016 Q3 0.1
2016 Q4 0.7
2017 Q1 -0.4
2017 Q2 -0.2
2017 Q3 1.2
2017 Q4 0.8
2018 Q1 -0.4
我试图找到列中数据最后一次与最新行一样低的时间(在这种情况下:应为 2017 年第一季度),并且需要使它在最新数字为正时查找最后一次高峰。
找到后,我需要提取该行的索引值。(在本例中为 '2017 Q1')
我一直在尝试编写类似可憎的代码(我只是最近开始编程):
from heapq import nsmallest
from heapq import nlargest
def second_smallest(numbers):
return nsmallest(2, numbers)[-1]
def second_largest(numbers):
return nlargest(2, numbers)[-1]
def next_smallest(df = pd.DataFrame()):
x = df[-1:].item()
if x <= 0:
y = df[df>= x]
second = second_smallest(y)
return df.index[df == second].tolist()
我使用的方法没有给我所需的结果,所以非常需要帮助。我已经找了一段时间,但要么是我的搜索词不对(因为我是用第二语言搜索的),要么是关于如何做到这一点的资料不多。
非常感谢。