我有一个由1列句点(年和季度)组成的数据框,以及该期间某些生产力数字的另一列。我的任务是确定一个时期,例如,我连续两个季度的生产力下降;或者,类似地,连续两个季度的增长。我想我可以使用蛮力并且只是循环查看一次看几行的行,但我读到这可能与“移位”功能有关 - 但我不明白它是如何工作的。谢谢你的帮助
1971q1 1,137.8 1971q2 1,159.4 1971q3 1,180.3 1971q4 1,173.6 1972q1 1,163.8 1972q2 1,140.1 1972q3 1,145.8 1972q4 1,150.0
答案 0 :(得分:2)
试试这个好友
#define a growth rate
df['growth_rate'] = np.log(df.production) - np.log(df.production).shift(1)
#a recession is when there have been two quarters of negative growth.
df['recession'] = (df['growth_rate'] < 0 ) & (df['growth_rate'].shift(1) < 0 )
答案 1 :(得分:1)
我仍然不太清楚你想要的数据集应该如何。
这是一种有助于识别增长和下降的方法:
In [450]: df
Out[450]:
period val
0 1971q1 1137.8
1 1971q2 1159.4
2 1971q3 1180.3
3 1971q4 1173.6
4 1972q1 1163.8
5 1972q2 1140.1
6 1972q3 1145.8
7 1972q4 1150.0
In [451]: np.sign(df.val.diff().fillna(0))
Out[451]:
0 0.0
1 1.0
2 1.0
3 -1.0
4 -1.0
5 -1.0
6 1.0
7 1.0
Name: val, dtype: float64
In [452]: df.loc[np.sign(df.val.diff().fillna(0)) < 0]
Out[452]:
period val
3 1971q4 1173.6
4 1972q1 1163.8
5 1972q2 1140.1