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

如何在Pandas中从JSON格式列提取名称至新DataFrame?

提取DataFrame中JSON数组的name字段并生成新DataFrame

循环实现方案(符合你的初步需求)

如果你的genres列是字符串格式的JSON数组,可以按以下步骤用循环提取:

  1. 导入依赖库并加载原始DataFrame
  2. 遍历每一行,解析JSON字符串为Python列表,再提取每个字典的name字段
  3. 将提取结果整理成新的DataFrame
import pandas as pd
import json

# 加载你的原始数据(根据实际情况调整)
df = pd.read_csv("your_data.csv")

# 初始化列表存储提取结果
genre_name_lists = []

# 遍历每行数据
for _, row in df.iterrows():
    # 解析JSON字符串为Python列表(如果genres已经是列表,跳过这行)
    genre_list = json.loads(row["genres"])
    # 提取所有name字段
    current_names = [item["name"] for item in genre_list]
    genre_name_lists.append(current_names)

# 生成新的DataFrame
new_df = pd.DataFrame({"genre_names": genre_name_lists})
# 若需要和原数据合并,用下面的代码:
# new_df = df.join(pd.DataFrame({"genre_names": genre_name_lists}))

更高效的非循环方案(适合4800行数据)

循环遍历iterrows()效率偏低,推荐用apply方法处理,速度更快:

情况1:genres是字符串格式的JSON

import pandas as pd
import json

def get_genre_names(genre_str):
    genre_list = json.loads(genre_str)
    return [g["name"] for g in genre_list]

df["genre_names"] = df["genres"].apply(get_genre_names)
new_df = df[["genre_names"]].copy()

情况2:genres已经是Python列表(无需解析JSON)

如果你的数据加载后,genres列直接是Python的列表字典,代码更简洁:

import pandas as pd

df["genre_names"] = df["genres"].apply(lambda x: [item["name"] for item in x])
new_df = df[["genre_names"]].copy()

输出示例

新DataFrame的genre_names列每个单元格会是这样的列表:

['Action', 'Adventure', 'Fantasy', 'Science Fiction']

内容的提问来源于stack exchange,提问作者احمد التميمي

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:13:32