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

如何使用pandas从单元格中提取iso_639_1语言编码并丢弃其余内容

实现步骤

首先确认你的spoken languages列存储格式,分两种场景处理:

场景1:列值为JSON格式字符串(大部分从csv/数据库直接读入的情况)

你给出的示例字符串包含中文双引号,需要先替换为英文双引号再解析:

  1. 导入依赖库
import pandas as pd
import json
  1. 解析字符串后提取编码
# 假设你的数据集已读入为df变量
# 先替换中文引号为英文引号,避免JSON解析报错
df['spoken languages'] = df['spoken languages'].str.replace('“', '"').str.replace('”', '"')

# 把JSON字符串解析为列表嵌套字典的Python对象
df['lang_obj'] = df['spoken languages'].apply(lambda x: json.loads(x))

# 提取所有iso_639_1编码,同一条数据的多个编码默认存为列表
df['iso_codes'] = df['lang_obj'].apply(lambda x: [item['iso_639_1'] for item in x])

如果你需要把同一条数据的多个编码拆分为单独的行,额外增加一行代码即可:

df_exploded = df.explode('iso_codes')

场景2:列值已经是列表嵌套字典的Python对象

直接提取编码即可:

df['iso_codes'] = df['spoken languages'].apply(lambda x: [item['iso_639_1'] for item in x])

可选方案:正则提取(无需解析JSON,效率更高)

如果你不想处理JSON解析逻辑,也可以直接用正则匹配编码内容,兼容中英文引号:

df['iso_codes'] = df['spoken languages'].str.findall(r'[“"]iso_639_1[“"]:\s*[“"]([a-z]{2})[“"]')

该方案适合数据量较大的清洗场景。

内容的提问来源于stack exchange,提问作者Mohamed Aman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:54:01