运行以下代码时出错。
s1 = pd.Series(dfs.index)
s2 = []
for x in df.index:
for i in s1:
if x > i & df['test'].loc[x] == True:
s2.append(df['shiftdt'])
dfs =是经济衰退开始的年份和qt
16 1949q1
34 1953q3
51 1957q4
255 2008q4
Name: shiftdt, dtype: object
df看起来像这样:
Unnamed: 4 GDP shift1 shift2 shiftdt test
14 1948q4 280.7 279.5 272.9 1948q3 True
15 1949q1 275.4 280.7 279.5 1948q4 False
16 1949q2 271.7 275.4 280.7 1949q1 False
17 1949q3 273.3 271.7 275.4 1949q2 False
18 1949q4 271 273.3 271.7 1949q3 False
19 1950q1 281.2 271 273.3 1949q4 False
20 1950q2 290.7 281.2 271 1950q1 True
21 1950q3 308.5 290.7 281.2 1950q2 True
df是像dfs中的那些年份列表,但也包括GDP,GDP的移位列,第一个移位列的另一个移位列以及如果gdp> 1,则布尔值为True。 shift1和shift1> shift2。我试图找出经济衰退的结束但我的问题是,有很多时候连续两个季度比前一个季度更好。我的目标是使用dfs的索引值(与df一致)并在每个索引值后获得第一个True。 (对不起,解释很复杂)
答案 0 :(得分:1)
import numpy as np
创建索引值为True的列:
df['new_index'] = np.where(df.test == True, df.index, np.nan)
回填:
df.new_index = df.new_index.new_index.bfill()