python - 在 Pandas 中查找项目最接近给定值的列名称

标签 python pandas

考虑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 ,然后减去12,得到absidxmin :

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/

相关文章:

python - 扭曲的服务器: monkey-patch file

python - 如何使用 wget 自动执行网页浏览任务?

c# - 语音识别 : voice driven control

python - 将一个 int 转换为 pandas 中的多个 bool 列

python - 在 1 年内绘制 DataFrame

Python Pandas - 使用时间戳定位器和偏移量检索行

python - Pylons 中的信号处理

python - Pandas 无法对数据框求和

python - Pandas 数据框条件替换和列修剪

python - Pandas DataFrame 中的点表示法是如何实现的?