You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas清理列数据及阿拉伯语翻译的技术求助

清理seniority_level列及阿拉伯语翻译方案

1. 先解析字典格式的列值

你的seniority_level列存储的是字典格式的字符串,不是可直接操作的字典对象,所以第一步要先解析它:

import ast
import pandas as pd

# 将字符串格式的字典转为实际字典
df_africa['seniority_level'] = df_africa['seniority_level'].apply(ast.literal_eval)
# 提取字典中的值(忽略键的差异)
df_africa['raw_level'] = df_africa['seniority_level'].apply(lambda x: list(x.values())[0])

2. 用replace完成阿拉伯语翻译

直接通过映射字典做替换最直接,把阿拉伯语对应到目标英语表述:

# 阿拉伯语-英语映射表
translation_dict = {
    'مستوى متوسط الأقدمية': 'Mid-Senior level',
    'مستوى المبتدئين': 'Entry level',
    'مساعد': 'Associate',
    'غير مطبق': 'Not Applicable',
    'دوام كامل': 'Full-time'  # 属于雇佣类型,可根据需求保留/丢弃
}

# 完成翻译替换
df_africa['cleaned_level'] = df_africa['raw_level'].replace(translation_dict)

3. 过滤保留目标层级

如果只需要保留指定的几个层级值,用isin筛选:

target_levels = ['Entry level', 'Mid-Senior level', 'Associate', 'Not Applicable']
# 仅保留目标值,其余设为缺失值
df_africa['cleaned_level'] = df_africa['cleaned_level'].where(df_africa['cleaned_level'].isin(target_levels), pd.NA)
# 或者直接筛选行
# df_africa = df_africa[df_africa['cleaned_level'].isin(target_levels)]

补充:为什么split函数没用?

你的列值是嵌套的字典字符串,split只能按字符分割,无法精准提取字典内部的value值,必须先把字符串解析为字典对象,才能正确提取内容。

内容的提问来源于stack exchange,提问作者Yonathan Ferede

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:01:15