-1

我有这个功能:

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也使用功能。有什么想法可以实现吗?我已经阅读了几篇类似的文章,但没有太大帮助。

4

1 回答 1

0

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)
于 2020-04-09T01:50:09.987 回答