首页 > 解决方案 > 从原始数据集中查找数据点的标签:函数

问题描述

我有这个函数,它从数据集中获取一个数据点(这里是所有 X1 到 X16),并从作为 df_all 提供的原始数据集中查找/读取它的标签(这里是“类”):

def label_finder(df_all,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,
                                 X14,X15,X16):    
    y_new_data= df_all.loc[(df_all['X1'] == X1) 
                        & (df_all['X2'] == X2) 
                        & (df_all['X3'] == X3)
                        & (df_all['X4'] == X4)
                        & (df_all['X5'] == X5)
                        & (df_all['X6'] == X6)
                        & (df_all['X7'] == X7)
                        & (df_all['X8'] == X8)
                        & (df_all['X9'] == X9)
                        & (df_all['X10'] == X10)
                        & (df_all['X11'] == X11)
                        & (df_all['X12'] == X12)
                        & (df_all['X13'] == X13)
                        & (df_all['X14'] == X14) 
                        & (df_all['X15'] == X15)
                        & (df_all['X16'] == X16),'class']

    return y_new_data

问题是我不想写所有那些 X1,X2,... Xn。

假设我有一个包含 60 个特征的数据集,那么我需要编写 X1,X2,...,X60!

如何修复此功能?

标签: pythondataframe

解决方案


您可以执行以下操作:

cols = ['X1', 'X2', ..., 'X60']

# or you can write col as
cols = ['X'+str(i) for i in range(1,61)]

def label_finder(df_all,x):    
    return df_all.loc[(df_all[cols] == x).all(axis=1),'class']

x = [X1, X2, ..., X60]
y_new_data = label_finder(df_all,x)

推荐阅读