考虑df
:
Index 0_usg 1_usg 2_usg 0_pre 1_pre 2_pre 3_pre
0 1.2 1.1 0.99 2.1 2.5 1.9 1.8
1 1.0 1.1 0.99 2.2 2.5 1.9 2.1
2 0.9 1.4 0.80 1.9 2.5 1.9 2.0
3 1.3 2.1 1.21 2.6 1.9 1.8 2.3
4 1.5 1.0 0.99 0.9 2.0 1.9 2.0
我想确定值最接近 1 的列(在与 usg
相关的列中)和值最接近 1 的列(在与 pre
相关的列中)最接近 2。
预期的输出是:
Index usg pre
0 2_usg 0_pre
1 0_usg 3_pre
2 0_usg 3_pre
3 2_usg 1_pre
4 1_usg 1_pre
请注意,如果两列中的两个项目是等距的,您可以选择其中一个。我如何有效地得到这个?
最佳答案
可以先用filter
,然后减去1
和2
,得到abs
与 idxmin
:
usg = df.filter(like='usg').sub(1).abs().idxmin(axis=1)
pre = df.filter(like='pre').sub(2).abs().idxmin(axis=1)
df1 = pd.DataFrame({'usg':usg,'pre':pre}, index=df.index, columns=['usg','pre'])
print (df1)
usg pre
0 2_usg 0_pre
1 0_usg 2_pre
2 0_usg 3_pre
3 2_usg 1_pre
4 1_usg 1_pre
关于python - 在 Pandas 中查找项目最接近给定值的列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41267490/