pkhiev:
私はこのようなサンプルのデータフレームを持っている場合:
>>> import pandas as pd
>>> a = [100,300,200,100,700,600,400,600]
>>> i = ["2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007"]
>>> df = pd.DataFrame(a, index = i, columns = {"gdp"})
>>> df
gdp
2000 100
2001 300
2002 200
2003 100
2004 700
2005 600
2006 400
2007 600
res=[]
私は、行を反復処理する、及び条件は、もし行(X + 1) - 行(X)<0の行(X + 2)行×(X + 1)<0 res.append(指数[X ])
したがって、この例では、私は[2001、2004]のリストになるだろう
私はこのためのコードを記述するかどうかはわかりません。ありがとうございました!
エズレル:
私はより良いパフォーマンスので、非ループ・ソリューションを好む-使用Series.shift
によって減算Series.sub
とで比較するSeries.lt
ことにより、以下、最後のフィルタのためにboolean indexing
とDataFrame.loc
、もし列名でも必要性フィルタgdp
:
s1 = df['gdp'].shift(-1)
s2 = df['gdp'].shift(-2)
m = s1.sub(df['gdp']).lt(0) & s2.sub(s1).lt(0)
out = df.loc[m, 'gdp']
print (out)
2001 300
2004 700
Name: gdp, dtype: int64