DataFrame里一列:3—5年变成数据怎么变?

img


工作年限那一列,如何做数据清洗处理呢?
具体有这三种复杂数据:3—5年,10年以上,不限。好难,处理完之后还要做分组求平均。

望采纳


可以使用 pandas 的 str.replace() 方法来替换掉 "年" 字符,然后再使用 str.split() 方法将字符串拆分为最小、最大两部分。接着,您可以计算最小值和最大值的平均值,并将它们转换为数值型。作为平均年限。例如:

# 假设有一个名为 "work_experience" 的列,包含了 "3-5年""5-10年""m-n年""不限" 这样的值

# 先替换掉 "年" 字符
df["work_experience"] = df["work_experience"].str.replace("年", "")

# 然后拆分最小值和最大值
df[["min", "max"]] = df["work_experience"].str.split("-", expand=True)

# 转成数字型
df["min"] = df["min"].astype(int)
df["max"] = df["max"].astype(int)

# 对于 "不限",您可以将 min 和 max 都设为 0
df.loc[df["work_experience"] == "不限", ["min", "max"]] = 0

# 计算平均值并转换为数值型
df["avg"] = df[["min", "max"]].mean(axis=1)