pandas - 计算差异选择元素熊猫数据框列
问题描述
需要检查定价错误值的代码逻辑,并且第一次大于 6,它会取那个时间戳值,我们称之为“TS1”。然后它会检查连续的 m ispricing>6,当错误定价第一次从 yes 变为 no 时,获取 mispricing = no 的时间戳并将其称为“TS2”。
然后做 TS2 - TS1
解决方案
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
推荐阅读
- flutter - 滚动控制器出错
- ruby-on-rails - 带有 Devise Token Auth 未初始化常量用户的 Rails
- ios - .png 文件在 Xcode 中以黑色背景加载
- python - 我需要用户输入从一个数据框指向另一个数据框并显示第二个数据框-python 中的一列
- mysql - 调用两个外键上使用的相同主键来显示不同的行/结果
- python-3.x - Python嵌套函数调用类中的另一个函数
- elasticsearch - 我可以在没有证书和身份验证的情况下使用 Elasticsearch https
- php - 如何修复在 xampp 上执行 mysqli 代码时出现的错误?
- android - 在 android 4.1.1 中使用 Kotlin 从任何类更新活动视图值的最佳方法
- c++ - 如何在 lambda 函数中使用 std::move 传递值