如何在Pandas中从JSON格式列提取名称至新DataFrame?
提取DataFrame中JSON数组的name字段并生成新DataFrame
循环实现方案(符合你的初步需求)
如果你的genres列是字符串格式的JSON数组,可以按以下步骤用循环提取:
- 导入依赖库并加载原始DataFrame
- 遍历每一行,解析JSON字符串为Python列表,再提取每个字典的
name字段 - 将提取结果整理成新的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,提问作者احمد التميمي
相关产品推荐
相关产品推荐

