使用分类列作为条件对薪资数据进行特征工程

需要根据分类列将薪资金额转换为年薪:

  • ‘M’ – 每月
  • ‘Y’ – 每年
  • ‘W’ – 每周
  • ‘B’ – 每两周
df = pd.DataFrame({'Name':['A','B','C','D','E'],                  'sal_amt':[4500,50000,2000,3000,5000],                  'sal_md':['M','Y','W','B','M']})df.head()#定义一个函数来解决我的问题...def func(row):    if row['sal_md'] == 'M':        return (row['sal_amt']*12)    elif row['sal_md'] =='Y':        return row['sal_amt']     elif row['sal_md'] == 'H':        return (row['sal_amt']*8760)    elif row['sal_md'] == 'W':        return (row['sal_amt']*52)    elif row['sal_md'] == 'B':        return (row['sal_amt']*26)    elif row['sal_md'] == 'S':        return row['sal_amt']    elif row['sal_md'] == 'A':        return row['sal_amt']df['sal_annual'] = df.apply(func,axis=1)

https://i.sstatic.net/INXva.png


回答:

In [1]: import pandas as pdIn [2]: df = pd.DataFrame({'Name':['A','B','C','D','E'],                      'sal_amt':[4500,50000,2000,3000,5000],                      'sal_md':['M','Y','W','B','M']})In [3]: multiplier_dict = {'M':12, 'Y':1, 'W':52, 'B':26}In [4]: df['sal_multiplier'] = df.sal_md.map(multiplier_dict)In [5]: df['sal_annual'] = df.sal_amt*df.sal_multiplierIn [6]: df.head()Out[6]:  Name  sal_amt sal_md  sal_multiplier  sal_annual0    A     4500      M              12       540001    B    50000      Y               1       500002    C     2000      W              52      1040003    D     3000      B              26       780004    E     5000      M              12       60000

虽然这不是你所问的,但它以一种简单且符合Python风格的方式精确地解决了你的问题。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注