python - 将值与列索引 pandas 匹配

标签 python pandas dataframe numpy

我的数据框如下所示:

   Given    Y1     eY1    Y2     eY2    Y3     eY3    Y4     eY4    Y5
0   0.45  0.25  0.3550  0.39  0.4200  0.43  0.5950  0.65  0.7175  0.74
1   0.39  0.15  0.2400  0.27  0.5025  0.58  0.7675  0.83  0.8600  0.87
2   0.99  0.30  0.4875  0.55  0.7225  0.78  0.9075  0.95  0.9800  0.99
3   0.58  0.23  0.2825  0.30  0.5550  0.64  0.7075  0.73  0.8725  0.92
4    NaN  0.25  0.3625  0.40  0.6175  0.69  0.8100  0.85  0.9250  0.95

我的目标很简单:尝试将每行中的“给定”值与最接近的列索引相匹配(列按升序排序,并将最接近的列索引输出到新列。我已经坚持了一些时间时间,非常感谢任何帮助/启动提示。

(对于给定中的任何“Nan”值,我输出“none”)

谢谢!

最佳答案

首先减去 DataFrame.subGiven 列中没有 Given 的所有列具有绝对值,然后使用 DataFrame.idxmin如果 Given 中没有缺失值:

df1 = df.drop('Given', 1).sub(df['Given'], axis=0).abs()
print (df1)
     Y1     eY1    Y2     eY2    Y3     eY3    Y4     eY4    Y5
0  0.20  0.0950  0.06  0.0300  0.02  0.1450  0.20  0.2675  0.29
1  0.24  0.1500  0.12  0.1125  0.19  0.3775  0.44  0.4700  0.48
2  0.69  0.5025  0.44  0.2675  0.21  0.0825  0.04  0.0100  0.00
3  0.35  0.2975  0.28  0.0250  0.06  0.1275  0.15  0.2925  0.34
4   NaN     NaN   NaN     NaN   NaN     NaN   NaN     NaN   NaN

df['new'] = np.where(df['Given'].isna(), None, df1.idxmin(axis=1))
print (df)
   Given    Y1     eY1    Y2     eY2    Y3     eY3    Y4     eY4    Y5   new
0   0.45  0.25  0.3550  0.39  0.4200  0.43  0.5950  0.65  0.7175  0.74    Y3
1   0.39  0.15  0.2400  0.27  0.5025  0.58  0.7675  0.83  0.8600  0.87   eY2
2   0.99  0.30  0.4875  0.55  0.7225  0.78  0.9075  0.95  0.9800  0.99    Y5
3   0.58  0.23  0.2825  0.30  0.5550  0.64  0.7075  0.73  0.8725  0.92   eY2
4    NaN  0.25  0.3625  0.40  0.6175  0.69  0.8100  0.85  0.9250  0.95  None

关于python - 将值与列索引 pandas 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72283726/

相关文章:

python - 从 csv 读取后,第一列名称用双引号括起来

python - BeautifulSoup : Get specific text that has no specific class

python - 如何根据名称选择 pandas 中的列?

python - Pandas :为什么 pandas.Series.std() 与 numpy.std() 完全不同

r - 基于整数按因子排序 data.frame

python - 使用 pandas 将年、月、日列合并为单个日期列

python - 我如何让我的 python 代码从我的吃 bean 人游戏中删除药丸?

python - 在Python中从每行具有不同数量组件的文件中读取数据

python - 在 tkinter 中交互式验证条目小部件内容

python - 如何正确分组列?