如何应用函数来获取 pandas 中编码的特定列

How to apply a function to get the encoded specific columns in pandas

我有这个功能:

get_class(cols):
    if cols == 1:
        return 1
    elif cols ==2:
        return 2
    else:
        return 0

我列出了某些列,如下所示:

cols = ['night', 'day']
cols_en = []

for each in cols:
    each = cols + '_en'
    cols_en.append(each)

在这里,我希望函数 get_class 应用于 cols 并在 cols_en 中获取输出。我想自动执行此代码:

df ['night_en'] = [1 if x==1 else 2 if x==2 else 0 for x in df['night']]

想法是将该函数应用于列表 cols 中的所有列并获得输出,其中列应用了函数 get_class,输出列具有 _en在最后。也许还使用 map 函数。有什么想法可以实现吗?我已经阅读了几篇类似的文章,但没有太大帮助。

IIUC,如果原来的值不是1也不是2,你想用0创建一个新的列,例如,你可以使用np.where。并在您的列表 cols 上创建一个循环以创建新列

for col in cols:
    df[f'{col}_en'] = np.where(df[col].isin([1,2]), df[col], 0)