【发布时间】:2020-10-20 11:31:29
【问题描述】:
我有以下代码,每次 notch_sp 从 11 或更高到 10 或更低时都会产生一个,但我只希望它在每个 gvkey 第一次发生时产生一个。
df['cliff']= (df['gvkey'].eq(df['gvkey'].shift()) &
df['notch_sp'].shift().gt(10) &
df['notch_sp'].lt(11)).view('i1')
对于如下所示的数据集:
df[['gvkey','notch_sp','am','cliff']]
Out[1]:
gvkey notch_sp am cliff
1 1004.0 12.0 0.490 0
2 1004.0 10.0 0.490 1
3 1004.0 11.0 0.608 0
4 1004.0 10.0 0.608 1
5 329498.0 12.0 NaN 0
6 329498.0 10.0 NaN 1
7 329498.0 13.0 NaN 0
8 329498.0 10.0 NaN 1
因此,第 2 行和第 6 行的悬崖必须为 1,其他任何地方都必须为 0。 很抱歉,我对这样做的想法没有任何意见,但我不知道该怎么做。
【问题讨论】:
标签: python pandas loops for-loop