我有两个数据帧。数据帧A
是:
[distance] [measure]
17442.77000 32.792658
17442.95100 32.792658
17517.49200 37.648482
17518.29600 37.648482
17565.77600 38.287118
17565.88800 38.287118
17596.93700 41.203340
17597.29700 41.203340
17602.16400 41.477979
17602.83900 41.612774
17618.16400 42.479890
17618.71100 42.681591
以及数据帧B
,即:
[mileage] [Driver]
17442.8 name1
17517.5 name2
17565.8 name3
17597.2 name4
17602.5 name5
17618.4 name6
对于dataframe B
中的每一行,我想从dataframe A
中的[distance]
中找到两行,其中A.loc[(A['distance']>= milage_value) & A['distance']<= mileage_value]
,所以我可以有这样的内容:
17442.77000 32.792658
17442.8 name1
17442.95100 32.792658
17517.49200 37.648482
17517.5 name2
17518.29600 37.648482
. .
. .
因此,我可以在大小为3的滚动窗口中应用以下函数:
def f(x):
return df.iloc[0,1]+(df.iloc[2,1]-df.iloc[0,1])*((df.iloc[1,0]-df.iloc[0,0])/(df.iloc[2,0]-df.iloc[0,0]))
a = df.rolling(window=3, min_periods=1).apply(f)[::3].reset_index(drop=True)
到目前为止,我已经连接了两个df和排序值来生成如上所述的三元组,但是当df B
的两个值在A[distance]
的距离范围内时,问题就出现了。任何提示/建议都将不胜感激!你知道吗
我认为您可以使用
merge_asof
使用direction
参数和drop_duplicates
来使用以下内容:输出:
相关问题 更多 >
编程相关推荐