【问题标题】:Pandas - Column value conversionsPandas - 列值转换
【发布时间】:2020-04-03 21:15:27
【问题描述】:

我的数据:我有一个如下所示的数据集:

dataset = pd.DataFrame({
   'salary_frequency': ['Annual', 'Annual', 'Hourly', 'Hourly', 'Annual', 'Monthly'], 
   'salary_range_low': [51907.68, 51907.85, 35, 35, 50598, 4000]})

salary_range_low 中的值基于salary_frequency (['Daily', 'Hourly' or 'Annual'])。

我的问题:如何将所有salary_range_low 转换为年度值以便更好地进行比较?

【问题讨论】:

  • 首先,你想要的输出是什么?其次,你有没有尝试过错误信息告诉你的任何事情并理解它,比如.loc这可能是解决你问题的关键?

标签: python pandas dataframe data-science


【解决方案1】:

您需要了解一个(例如“每小时”)如何转换为年份。完成翻译后,如下所示:

map_dict = {'Annual': 1, 'Hourly': 1880, 'Monthly': 12}

您可以使用pd.Series.map 和乘法:

df['per_year'] = df['salary_frequency'].map(map_dict) * df['salary_range_low']
df

注意: 1880 小时是基于每年 47 个工作 40 小时的工作周

【讨论】:

    【解决方案2】:
    factor_mapper = {'Hourly': 8 * 253, 'Daily': 253, 'Annual': 1}
    df['salary_range_low'] = df['salary_range_low'] * df['salary_frequency'].map(factor_mapper)
    

    【讨论】:

      【解决方案3】:

      你可以使用map:

      # modify this to fit your need
      maps = pd.Series([1, 365, 365*24], index=['Annually', 'Daily', 'Hourly'])
      
      df['salary_range_low'] *= df['salary_frequency'].map(maps)
      

      【讨论】:

      • 我会考虑一年中的工作日,通常是 252-253 而不是 365。
      • @FBruzzesi 同意,我只是太懒了,把它留给 OP :-)。
      猜你喜欢
      • 2017-10-25
      • 2021-10-13
      • 1970-01-01
      • 2022-11-11
      • 2021-11-03
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多