首页 > 解决方案 > 在数据框中的行之间执行计算,并将结果值与前一行中的行值进行比较

问题描述

我有一个具有以下格式的数据框:

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)

标签: pythonpandasdataframenumpy

解决方案


推荐阅读