使用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
相关产品推荐
相关产品推荐

