Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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_Concatenation - Fatal编程技术网

Python 有条件的熊猫壳

Python 有条件的熊猫壳,python,pandas,concatenation,Python,Pandas,Concatenation,我有两个数据帧,一个是大的(+百万行,几百列),另一个是小的(10s列,几百行)。他们的数据与此类似: 数据帧1: ID val1 val2 Time1 234 0.32 1 306 234 0.93 0 309 235 1.02 1 305 数据帧2: ID val3 val4 Time2 234 9621 234 302 234 12

我有两个数据帧,一个是大的(+百万行,几百列),另一个是小的(10s列,几百行)。他们的数据与此类似:

数据帧1:

ID    val1    val2    Time1
234   0.32       1      306
234   0.93       0      309
235   1.02       1      305
数据帧2:

ID    val3    val4    Time2
234   9621     234      302
234     12       0      308
235    500       9      305
我需要按ID将值连接起来,条件是
Time2
的值必须大于
Time1
,并且选择的行是所有可能选项的
Min(Time2-Time1)

使最终输出看起来像:

ID    val1    val2    Time1    val3    val4    Time2 
234   0.32       1      306     12       0      308
234   0.93       0      309    Nan     Nan      Nan
235   1.02       1      305    500       9      305

执行此操作的最快方法是什么?据我所知,基本连接选项无法执行此操作,行迭代非常缓慢

您可以使用
merge\u asof

pd.merge_asof(df1.sort_values('Time1'),df2.sort_values('Time2'),left_on='Time1',right_on='Time2',by='ID',direction='forward')
Out[677]: 
    ID  val1  val2  Time1   val3  val4  Time2
0  235  1.02     1    305  500.0   9.0  305.0
1  234  0.32     1    306   12.0   0.0  308.0
2  234  0.93     0    309    NaN   NaN    NaN