Python 有条件的熊猫壳
我有两个数据帧,一个是大的(+百万行,几百列),另一个是小的(10s列,几百行)。他们的数据与此类似: 数据帧1: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
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