pd.read_csv解析IMDb TSV数据集异常:部分制表符未被识别
问题1:TSV文件部分行制表符未被正确识别
针对IMDb数据集加载时的分隔符异常,试试以下方案:
- 明确指定分隔符与引擎:默认的C引擎在处理含换行或特殊字符的字段时容易出错,换成Python引擎并强制指定制表符分隔,同时处理IMDb的缺失值标记:
import pandas as pd df = pd.read_csv( 'title.basics.tsv.gz', sep='\t', encoding='utf-8', engine='python', na_values='\\N' ) - 排查非标准制表符:如果仍有问题,解压TSV文件后用文本编辑器定位解析错误的行,检查是否存在全角制表符或其他非标准分隔符。
问题2:
primaryTitle != originalTitle筛选出看似相同的行 这种情况基本和dtype无关,核心是字符串存在不可见差异,按以下步骤处理:
- 清洗空白字符:先去除两个字段的前后空白(包括空格、换行、制表符):
df['primaryTitle'] = df['primaryTitle'].str.strip() df['originalTitle'] = df['originalTitle'].str.strip() - 查看原始字符串内容:对筛选出的"看似相同"的行,用
repr()查看字符串原始形式,对比是否有不可见字符:sample_row = df[df['primaryTitle'] != df['originalTitle']].iloc[0] print("primaryTitle原始内容:", repr(sample_row['primaryTitle'])) print("originalTitle原始内容:", repr(sample_row['originalTitle'])) - 统一大小写后比较:如果是大小写差异导致的误判,统一为小写后再筛选:
filtered_df = df[df['primaryTitle'].str.lower() != df['originalTitle'].str.lower()] - 强制统一字符串类型:如果字段不是标准字符串类型,强制转换确保类型一致:
df['primaryTitle'] = df['primaryTitle'].astype(str) df['originalTitle'] = df['originalTitle'].astype(str)
内容的提问来源于stack exchange,提问作者iim7b5-v7-im7
相关产品推荐
相关产品推荐

