如何处理CSV文件与Pandas DataFrame的行数差异问题?
Pandas加载CSV行数与Excel不一致的解决方法
可能的原因
Pandas与Excel行数差异最常见的原因是CSV字段中嵌入了换行符(比如字段内容包含\n或\r\n)。Pandas默认读取逻辑会将这些嵌入换行符识别为新行分隔符,导致加载行数远少于Excel解析的行数;而Excel会正确解析带引号包裹的字段内容,忽略内部的换行符。
解决代码
1. 修正CSV读取逻辑
调整pd.read_csv的参数,让它正确处理带引号的字段和嵌入换行符:
import pandas as pd # 使用python引擎+全引号解析模式,处理包含嵌入换行符的CSV df = pd.read_csv('C_data_2.csv', quoting=pd.QUOTE_ALL, engine='python') # 验证加载行数,确认与Excel一致 print(f"加载行数:{len(df)}")
如果CSV中使用了转义字符(比如用\转义引号),可以额外添加escapechar参数:
df = pd.read_csv('C_data_2.csv', quoting=pd.QUOTE_ALL, engine='python', escapechar='\\')
2. 优化Gender列缺失值填充
你原有的缺失值填充逻辑可以简化,同时覆盖NaN和字符串类型的"nan":
# 获取Gender列出现频率最高的有效值 most_common = df['Gender'].value_counts().index[0] # 统一替换所有缺失形式为最常见值 df['Gender'] = df['Gender'].replace(['nan', pd.NA], most_common)
3. 导出验证
处理完成后导出新的CSV,再用Excel打开核对行数:
# 导出处理后的数据集(不包含索引列) df.to_csv('C_data_2_fixed.csv', index=False)
内容的提问来源于stack exchange,提问作者ebdeem
相关产品推荐
相关产品推荐

