如何批量读取TXT酒店评论并转换为指定结构的Pandas DataFrame
实现方案(基于Python Pandas)
核心思路
先把单文件全量文本拆分为单评论行,再匹配酒店信息表拿到对应ID,最后生成评论唯一ID按要求输出即可。
分步代码
1. 拆分全量文本为单条评论结构
import pandas as pd # 替换为你自己的两个原始表变量名:df_raw(含file_name、text字段)、df_hotel(酒店信息表) # 按换行符拆分全量文本,炸成一行对应一条评论 df_review = df_raw.assign( single_review = df_raw["text"].str.split("\n") ).explode("single_review", ignore_index=True) # 过滤空行(避免文件末尾空行产生脏数据) df_review = df_review[df_review["single_review"].str.strip() != ""] # 按制表符拆分出日期、评论标题、评论内容三个字段 df_review[["Date", "Review Title", "Review Text"]] = df_review["single_review"].str.split("\t", n=3, expand=True)
2. 匹配获取Hotel ID
# 拆分文件名得到国家、城市、酒店名,用于关联酒店信息表 df_review[["Country", "City", "Hotel"]] = df_review["file_name"].str.split("_", n=3, expand=True) # 关联酒店信息表,拿到对应酒店的唯一ID df_review = pd.merge( left = df_review, right = df_hotel.rename(columns={"ID": "Hotel ID"}), on = ["Country", "City", "Hotel"], how = "left" ) # 可选校验:打印Hotel ID为空的行,检查是否有文件名和酒店信息表不匹配的异常数据 print(df_review[df_review["Hotel ID"].isna()]["file_name"].unique())
3. 生成Review ID并输出目标结构
# 生成自增的唯一Review ID,也可根据需求自定义规则(如酒店ID+序号) df_review["Review ID"] = range(1, len(df_review) + 1) # 按要求的字段顺序输出最终表 df_final = df_review[["Review ID", "Hotel ID", "Date", "Review Title", "Review Text"]]
可选优化
如果文件名或评论内容前后有多余空格,拆分时可以加str.strip()处理,避免关联或拆分失败。
内容的提问来源于stack exchange,提问作者Amargitts
相关产品推荐
相关产品推荐

