python - 在数据框中的行之间执行计算,并将结果值与前一行中的行值进行比较
问题描述
我有一个具有以下格式的数据框:
ID Y M ... distanceWindow timeWindow dateTime
0 30218 2010 1.0 ... 5.504462 11.266509 2010-01-01 04:05:12.000
1 30219 2010 1.0 ... 6.302367 13.351246 2010-01-01 13:24:11.000
2 30220 2010 1.0 ... 5.371478 10.919053 2010-01-01 15:11:29.000
3 30221 2010 1.0 ... 6.860901 14.810562 2010-01-01 22:18:54.000
4 30223 2010 1.0 ... 6.767812 14.567342 2010-01-02 17:29:43.000
... ... ... ... ... ... ... ...
我想求dateTime为0和dateTime 1之差的绝对值,然后看该值是否小于timeWindow值0。如果小于,那么我将创建一个新列['main']和将其值设置为 true,否则将其设置为 false。
我想对所有后续行执行此操作。0 对 1、0 对 2、0 对 3……然后 1 对 2、1 对 3,依此类推。
到目前为止,我试图将 apply 与 lambda 和 shift 一起使用,但我不确定这是否是正确的方法。
df['main'] = df.apply(
lambda x: True if (
abs(df['dateTime'] - df['dateTime'].shift(periods=1))) < df["timeWindow"]
else False)
解决方案
推荐阅读
- c - 二叉树构造问题中的“分段错误:11”错误
- python - TensorFlow ImportError(未知位置)
- ajax - 我从 servlet 响应值中得到 Undefind
- php - 根据 WooCommerce 类别自动调整产品税级
- mysql - 从 NodeJS 连接到本地 WordPress MySQL 数据库时出现 ER_ACCESS_DENIED_ERROR
- python-3.x - 每次我运行这个 python 脚本时,我都会得到输出“无”,我该如何解决这个问题?
- java - Android 文件上传 - 使用后端作为 Java Rest API 的 Retrofit Multipart
- javascript - 我的 Discord 机器人没有响应(javascript)
- java - JUnit5:Surefire 插件运行 JUnit4 测试两次
- r - 为此制作循环