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

解决pd.read_csv读取含逗号的餐厅评论CSV文件的列错位问题

解决CSV含逗号文本导致pandas列识别错误的问题

你的核心问题是:CSV中评论字段包含逗号但未用引号包裹,pd.read_csv()默认把这些逗号当成列分隔符,导致Liked列数据错位、出现NaN值。on_bad_lines='skip'这类参数无效,因为这些行本身格式无错,只是解析逻辑不符合你的数据结构。

解决方案1:正则分隔符匹配(简洁高效)

利用正则表达式指定仅匹配紧跟0/1的逗号作为列分隔符,避开评论内的逗号:

import pandas as pd

# 使用Python引擎支持正则分隔符,精准匹配分隔评论与标签的逗号
df = pd.read_csv('your_restaurant_reviews.csv', sep=',(?=[01])', engine='python')

正则,(?=[01])的作用是:仅匹配后面紧跟0或1的逗号,完美定位到评论和标签的分界点。

解决方案2:手动逐行处理(兼容性强)

如果正则方案有特殊场景不适用,可手动读取文件,按最后一个逗号拆分每行内容:

import pandas as pd

review_data = []
with open('your_restaurant_reviews.csv', 'r', encoding='utf-8') as file:
    next(file)  # 跳过首行表头
    for line in file:
        line = line.strip()
        # 从右往左拆分1次,分离评论和标签
        review, liked = line.rsplit(',', 1)
        review_data.append({
            'Review': review.strip(),
            'Liked': int(liked.strip())
        })

df = pd.DataFrame(review_data)

这种方法不受评论内逗号数量影响,只要标签始终在每行末尾就有效。

验证结果

处理后可通过df.head()查看数据结构,或用df.isnull().sum()检查,Liked列应无NaN值,评论内容完整保留。

内容的提问来源于stack exchange,提问作者2brk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:12:36