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

如何使用Pandas按数组列对书籍数据分组并生成指定格式的语言-书籍映射字典

如何使用Pandas按数组列对书籍数据分组并生成指定格式的语言-书籍映射字典

嘿,我来帮你搞定这个问题!你要的是把带语言数组列的书籍数据转成指定格式的语言-书籍映射字典,用Pandas可以分几步轻松实现:

第一步:把字符串形式的语言列表转成真实的Python列表

你的CSV里Languages列存的是字符串化的列表(比如"['Portuguese','English']"),首先得把它转成真正的Python列表才能操作。这里用ast.literal_eval比直接用eval更安全,不会执行恶意代码:

import pandas as pd
import ast

# 读取CSV文件到DataFrame
df = pd.read_csv("你的书籍数据.csv")

# 转换字符串列表为实际Python列表
df['Languages'] = df['Languages'].apply(ast.literal_eval)

第二步:把语言列表“拆”成单独行(关键一步!)

Pandas的groupby没法直接处理列表类型的列,所以我们需要用explode方法,把每个列表里的语言拆成单独的行,这样每一行就对应一本书名+一种语言:

# 拆分Languages列的列表,生成新的DataFrame
exploded_df = df.explode('Languages')

拆分后的数据结构大概是这样的:

Book NameLanguages
Book 1Portuguese
Book 1English
Book 2English
Book 2Japanese
Book 3Spanish
Book 3Italian
Book 3English

第三步:按语言分组并生成初始字典

现在就可以正常用groupby按语言分组,把同一语言对应的书名收集成列表,再转成字典:

# 按语言分组,收集对应的书名列表,转成字典
language_books = exploded_df.groupby('Languages')['Book Name'].agg(list).to_dict()

这时候得到的字典所有值都是列表,比如{'Portuguese': ['Book 1'], ...},还需要最后一步调整格式。

第四步:调整字典格式(单本书名转字符串)

遍历初始字典,把只有一个书名的列表转成单独的字符串,和你想要的格式匹配:

final_dict = {}
for lang, books in language_books.items():
    if len(books) == 1:
        final_dict[lang] = books[0]
    else:
        final_dict[lang] = books

运行完这步,你就能得到完全符合需求的字典啦!

小提醒

注意你提供的示例数据里,Book3的语言列有个小语法错误:"[Spanish','Italian','English']"少了开头的单引号,实际处理时要确保CSV里的字符串列表格式正确,不然ast.literal_eval会报错哦。

备注:内容来源于stack exchange,提问作者Jorge Luiz Monteiro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 11:34:29