如何用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")即可
- 如果是用空格分隔genre和票数,比如
内容的提问来源于stack exchange,提问作者Robo Bot
相关产品推荐
相关产品推荐

