Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在数据框中的行之间执行计算,并将结果值与前一行中的行值进行比较_Python_Pandas_Dataframe_Numpy - Fatal编程技术网

Python 在数据框中的行之间执行计算,并将结果值与前一行中的行值进行比较

Python 在数据框中的行之间执行计算,并将结果值与前一行中的行值进行比较,python,pandas,dataframe,numpy,Python,Pandas,Dataframe,Numpy,我有一个数据帧,格式如下: 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

我有一个数据帧,格式如下:

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)
df['main']=df.apply(
lambda x:如果(
abs(df['dateTime']-df['dateTime'].shift(periods=1))
比较结果的数量将远远大于数据框中的行数。根据我的描述,您是否看到解决此问题的更好方法?我正在考虑制作一份数据集副本以与自身进行比较。就像一个for-in-for循环。这样的东西可以推荐吗?