我正在努力解决这个问题。我有一个看起来像这样的熊猫数组
delta_n column_1 ...
0 10 10 ...
1 20 0
2 30 0
现在我有一个数字,可以说我搜索delta_n=20.5
,我想选择最接近delta_n数字的行。
我的输出应该是:
1 20 0
我使用df.loc[20.5]
进行了尝试,但是由于它不在pd数据框中,因此无法正常工作。
谢谢, R
答案 0 :(得分:2)
用sub
减去值,用abs
得到绝对值,用idxmin
找到最小值的索引,最后用loc
选择:
idx = df['delta_n'].sub(delta_n).abs().idxmin()
#added double [[]] for one row DataFrame
df1 = df.loc[[idx]]
print (df1)
delta_n column_1
1 20 0
#output Series with one []
s = df.loc[idx]
print (s)
delta_n 20
column_1 0
Name: 1, dtype: int64
详细信息:
print (df['delta_n'].sub(delta_n))
0 -10.5
1 -0.5
2 9.5
Name: delta_n, dtype: float64
print (df['delta_n'].sub(delta_n).abs())
0 10.5
1 0.5
2 9.5
Name: delta_n, dtype: float64
print (df['delta_n'].sub(delta_n).abs().idxmin())
1
通过numpy.argmin
和通过iloc
选择职位的另一种numpy解决方案:
pos = df['delta_n'].sub(delta_n).abs().values.argmin()
print (pos)
1
df1 = df.loc[[pos]]
print (df1)
delta_n column_1
1 20 0
s = df.loc[pos]
print (s)
delta_n 20
column_1 0
Name: 1, dtype: int64