Как применить функцию для получения закодированных спецификаций c столбцов в pandas - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть эта функция:

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, и получить выходные данные, где к столбцам применяется функция fuction get_class и выводятся столбцы имеют _en в конце. Возможно использование функции map также. Есть идеи для этого? Я прочитал несколько похожих статей, но мало чем помог.

1 Ответ

0 голосов
/ 09 апреля 2020

IIU C, вы хотите создать новый столбец с 0, если значение не равно 1 или 2 в оригинале, например, вы можете использовать np.where. и создайте al oop над вашим списком cols, чтобы создать новый столбец

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