首页 > 解决方案 > 计算差异选择元素熊猫数据框列

问题描述

需要检查定价错误值的代码逻辑,并且第一次大于 6,它会取那个时间戳值,我们称之为“TS1”。然后它会检查连续的 m 在此处输入图像描述ispricing>6,当错误定价第一次从 yes 变为 no 时,获取 mispricing = no 的时间戳并将其称为“TS2”。

然后做 TS2 - TS1

标签: pandasdataframe

解决方案


df=pd.DataFrame(data={'ts':list(range(1,14)),
                      'mp':[0,0,1,1,1,0,0,1,1,0,0,1,0]}) # your data
df.loc[df.mp.diff(1)==1, 'ts1'] = df.ts  # TS1
df.loc[df.mp.diff(1)==-1, 'ts2'] = df.ts  # TS2
df=df[~(df.ts1.isna())|~(df.ts2.isna())] # keep only rows with changes
df.loc[~df.ts2.isna(), 'delta'] = df.ts2 - df.ts1.shift(1)  # TS2-TS1
print (df)

    ts  mp   ts1   ts2  delta
2    3   1   3.0   NaN    NaN
5    6   0   NaN   6.0    3.0
7    8   1   8.0   NaN    NaN
9   10   0   NaN  10.0    2.0
11  12   1  12.0   NaN    NaN
12  13   0   NaN  13.0    1.0

推荐阅读