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

如何用Python将DataFrame的genre_and_votes字段拆分为多个独立列

解决方案
import pandas as pd

# 读取CSV文件,用raw字符串避免路径转义问题
df = pd.read_csv(r"C:\Users\mysite\Desktop\practice\book1.csv")

# 定义拆分genre_and_votes的函数,可根据你的实际分隔符调整
def parse_genre_votes(text):
    result = {}
    # 先按逗号拆分每个genre和票数的组合,可根据实际分隔符修改
    for pair in text.split(","):
        # 再按冒号拆分genre名称和票数,可根据实际分隔符修改
        genre, votes = pair.strip().split(":")
        # 若票数带单位可先替换掉单位字符,例votes = votes.strip().replace("票","")
        result[genre.strip()] = int(votes.strip())
    return result

# 处理genre_and_votes列,拆分成多列
genre_df = df["genre_and_votes"].apply(parse_genre_votes).apply(pd.Series)

# 把Title列和拆分后的genre列合并,得到最终结果
final_df = pd.concat([df[["Title"]], genre_df], axis=1)

# 空值可按需替换为0,例final_df = final_df.fillna(0)
# 导出结果到新CSV
# final_df.to_csv("处理后的书籍数据.csv", index=False, encoding="utf-8-sig")
print(final_df)
  • 上述代码默认适配genre_and_votes格式为科幻:150,奇幻:90,儿童:30的场景,如果你的字段分隔规则不同,修改对应split的分隔符即可:
    • 如果是用空格分隔genre和票数,比如科幻 150,奇幻 90,把split(":")改成split(" ")即可
    • 如果是用换行分隔不同genre,把split(",")改成split("\n")即可

内容的提问来源于stack exchange,提问作者Robo Bot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:51:01