我有下表:
year pop1 pop2
0 0 100000 100000
1 1 999000 850000
2 2 860000 700000
3 3 770000 650000
Run Code Online (Sandbox Code Playgroud)
我想为每个 pop (pop1 ,pop2) 找到 pop 最接近给定数字的年份,例如,pop 最接近 830000 的年份。
有没有办法根据给定的值在列内找到最接近的值?
我看过这篇文章(如何在 Pandas 系列中找到与输入数字最接近的值? _ 但似乎这里的结果是上下,我最终只能得到一个数字。
*我没有代码示例,因为我没有找到任何用于获取最近的参数
将列转换year为索引,然后减去值,通过最接近的值获取绝对值和最后一个索引(此处为年份) - 这里最小为DataFrame.idxmin:
val = 830000
s = df.set_index('year').sub(val).abs().idxmin()
print (s)
pop1 2
pop2 1
dtype: int64
Run Code Online (Sandbox Code Playgroud)