我的数据框架如下所示:

   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

我的目标很简单:try 将每行中的"给定"值与最接近的列索引相匹配(列按升序排序,并将最接近的列索引输出到新列.我对此已经坚持了一段时间,非常感谢任何帮助/开始提示.

(对于给定的任何"Nan"值,我将输出"none")

非常感谢.

推荐答案

首先用绝对值将没有Given的所有列减go Given乘以DataFrame.sub,如果Given中没有缺失值,则使用DataFrame.idxmin:

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相关问答推荐

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

将JSON对象转换为Dataframe

当递归函数的返回值未绑定到变量时,非局部变量不更新:

什么是合并两个embrame的最佳方法,其中一个有日期范围,另一个有日期没有任何共享列?

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

Python日志(log)模块如何在将消息发送到父日志(log)记录器之前向消息添加类实例变量

如何使用matplotlib查看并列直方图

对于标准的原始类型注释,从键入`和`从www.example.com `?

一维不匹配两个数组上的广义ufunc

将像素信息写入文件并读取该文件

Django更新视图未更新

为什么按下按钮后屏幕的 colored颜色 保持不变?

如何在PYTHON中向单元测试S Side_Effect发送额外参数?

通过对列的其余部分进行采样,在Polars DataFrame中填充_null`?

从`end_date`回溯,如何计算以极为单位的滚动统计量?

简化通用属性的创建

matplotlib散点图与NaNs和cmap colored颜色 矩阵

将COLUMN BY GROUP中的值连接为列表,并将其赋值给PANAS数据框中的变量

如何获得症状表达式的真实部分?