如何应用函数来获取 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)
我有这个功能:
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)