按索引最接近特定值的熊猫子集

时间:2019-03-22 12:41:08

标签: python pandas

我想知道如何为最接近特定值的索引子集一个DataFrame。例如:

import pandas as pd
import numpy as np

np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],
               axis=1)

df.index = np.random.randn(len(df.index))
closest_to = 0
df.loc[df.index.difference([closest_to]).min()]

该索引的子集最接近0,但我正在寻找最接近零的绝对差。

编辑: 当最接近的值为正时,添加df.loc[abs(df.index.difference([closest_to])).min()]可行,但是当最接近的值为负时,显然会给出KeyError。

1 个答案:

答案 0 :(得分:0)

我找到了一个不是很整洁但可以完成工作的解决方案。

closest_to = 0
idx = abs(df.index.difference([closest_to])).min()
if idx in df.index:
    pass
else:
    idx = -idx
df.loc[idx]