我正在尝试合并2个pandas数据帧,但是,合并列中的值并不完全相同。
我正在使用该命令
pd.merge(D_data, L_data,on="R_Time")
但是,在D_data中,我的R_time列看起来像
4.316667, 4.320834, 4.325000
在我的L_data列中,我的数据如下:
4.31000, 4.32000, ...
基本上,我要做的是获取第一组中的每个项目,并将其与第二组中最接近的元素相匹配。我已经使用Excel中的vlookup函数完成了这项工作,但我并不完全确定如何在Pandas Dataframe对象中获得相同的功能。
鉴于数据:
D_data:
4.316667
4.320834
4.325
4.329167
4.333334
4.3375
4.341667
4.345834
4.35
4.354167
4.358334
L_Data
4.316667
4.318667
4.320667
4.322667
4.324667
4.326667
4.328667
4.330667
4.332667
4.334667
4.336667
我希望在这些元素之间进行配对,即使它们在大多数情况下并不完全相同。
答案 0 :(得分:2)
您可以使用Pandas' merge_asof()
:
答案 1 :(得分:1)
首先在L_data中创建一个列,其中R_data中的值最接近(绝对差值最小的索引),然后合并:
import pandas as pd
D_data =pd.DataFrame({"R_Time":[4.316667,4.320834,4.325,4.329167,4.333334,4.3375,4.341667,4.345834,4.35,4.354167,4.358334]})
L_data =pd.DataFrame({"_R_Time":[4.316667,4.318667,4.320667,4.322667,4.324667,4.326667,4.328667,4.330667,4.332667,4.334667,4.336667]})
L_data["R_Time"]=L_data.apply(lambda x:D_data["R_Time"][abs(D_data["R_Time"]-x["_R_Time"]).idxmin()],axis=1)
pd.merge(D_data, L_data,on="R_Time")
结果:
R_Time _R_Time
0 4.316667 4.316667
1 4.316667 4.318667
2 4.320834 4.320667
3 4.320834 4.322667
4 4.325000 4.324667
5 4.325000 4.326667
6 4.329167 4.328667
7 4.329167 4.330667
8 4.333334 4.332667
9 4.333334 4.334667
10 4.337500 4.336667