0

假设我有俩份数据,俩个DataFrame,如下:
df1:
time,value
1 , 0.1
2 , 0.2
3 , 0.3
4 , 0.4

df2:
time, value
3.103 , 10
3.106 , 20
3.109 , 30
3.112 ,40

现在我想取得df2.value=20时,df1的value,需要如何写?
思路是df2.value = 20 取得 time = 3.106
然后如果是 df1[df1.time == 3.106].value 取出来是空的,如何取到df1里面time最接近3.106的值?在这个例子我就需要取到 0.3

lemon 15
2019-03-10 提问

1 个回答

1

已采纳

最接近的话, 按此题来说, round()函数最合适不过了:
内置函数的round(),用来四舍五入,第二个参数是保留小数点后多少位,默认是0

time = 3.106
df1[df1.time == round(time)].value

或者更一般的,不用 round()函数:

temp_df = df1.time - time # 求两两之间的差
temp_df = abs(temp_df) # 取绝对值
index = temp_df.idxmin() # 取最小值的索引

print(df1.value[index])

推广链接