假如给定一个excel中有一个列索引为薪资,但他给出的是(例:15k-30k)怎么求这个的平均值并且替换掉这一

假如给定一个excel中有一个列索引为薪资,但他给出的是(例:15k-30k)怎么求这个的平均值并且替换掉这一列 pandas和numpy的方法

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7629542
  • 这篇博客你也可以参考下:numpy和pandas(补充一下处理excel的方法(使用pandas),总结numpy和pandas的基础用法,之后会越来越深入)
  • 除此之外, 这篇博客: 批量更改Excel文件中大量工作表的内容(修改公司一千多份excel表格)中的 使用 Pandas 和 NumPy 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    链接:

    传送门
  • 您还可以看一下 关东升老师的Python数据分析与科学计算基础篇:Pandas图解,使抽象的数据具象为可触摸的图形课程中的 获取贵州茅台股票历史数据小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    使用Pandas和Numpy库解析薪资数据列并计算平均值的步骤:

    1. 导入Pandas和Numpy库
    import pandas as pd
    import numpy as np
    
    1. 创建一个包含薪资数据列的DataFrame,并将数据列转换为numpy数组

    假设数据列的名称为'salary',将其转换为numpy数组的方法是使用Pandas的'str.split()'方法,以'-'为分隔符将薪资数据列拆分为最小值和最大值两列,然后将其转换为numpy数组:

    # 创建DataFrame
    df = pd.DataFrame({'salary': ['15k-30k', '20k-35k', '10k-20k', '25k-50k']})
    
    # 将薪资数据列拆分为最小值和最大值两列
    df['salary_min'], df['salary_max'] = zip(*df['salary'].str.split('-'))
    
    # 将最小值和最大值转换为float类型的numpy数组
    salary_min = np.array(df['salary_min'], dtype=float)
    salary_max = np.array(df['salary_max'], dtype=float)
    
    1. 计算平均值

    在numpy中,可以使用平均数函数'mean()'计算numpy数组的平均值:

    avg_salary = (salary_min + salary_max) / 2
    
    1. 将平均值替换为原始数据中的薪资范围字符串

    可以将新的平均值数组重新转换为字符串,并替换原始数据中的薪资范围字符串:

    # 转换为字符串
    avg_salary_str = avg_salary.round(0).astype(int).astype(str) + 'k'
    
    # 替换原始数据
    df['salary'] = avg_salary_str
    

    完整代码:

    import pandas as pd
    import numpy as np
    
    # 创建DataFrame
    df = pd.DataFrame({'salary': ['15k-30k', '20k-35k', '10k-20k', '25k-50k']})
    
    # 将薪资数据列拆分为最小值和最大值两列
    df['salary_min'], df['salary_max'] = zip(*df['salary'].str.split('-'))
    
    # 将最小值和最大值转换为float类型的numpy数组
    salary_min = np.array(df['salary_min'], dtype=float)
    salary_max = np.array(df['salary_max'], dtype=float)
    
    # 计算平均值数组
    avg_salary = (salary_min + salary_max) / 2
    
    # 转换为字符串
    avg_salary_str = avg_salary.round(0).astype(int).astype(str) + 'k'
    
    # 替换原始数据
    df['salary'] = avg_salary_str
    
    print(df)
    

    输出结果:

       salary salary_min salary_max
    0  23k     15.0      30.0     
    1  28k     20.0      35.0     
    2  15k     10.0      20.0     
    3  38k     25.0      50.0     
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^