pd.concat拼接DataFrame形状类型均正确,但文本处理时报TypeError如何解决?
问题描述
我在进行自然语言处理相关开发时,单独使用yor1、yor2等DataFrame时代码运行正常,但将多个读取自CSV文件的DataFrame通过pd.concat拼接为yorumlar后,代码抛出如下错误:
TypeError: expected string or bytes-like object
我已确认yorumlar的形状、数据类型都符合预期,所有待拼接的CSV文件格式完全一致,但无法定位pd.concat相关的问题。我的完整代码如下:
import numpy as np import pandas as pd import re import nltk from nltk import FreqDist yor1=pd.read_csv("Amazon Brand.csv") yor2=pd.read_csv("American Soft Linen.csv") yor3=pd.read_csv("GLAMBURG.csv") yor4=pd.read_csv("Hammam.csv") yor5=pd.read_csv("Hotel.csv") yor6=pd.read_csv("Luxury Hotel.csv") yor7=pd.read_csv("Luxury White.csv") yor8=pd.read_csv("Qute.csv") yorumlar = pd.concat([yor1,yor2,yor3,yor4,yor5,yor6,yor7,yor8], axis=0) print(yorumlar) from nltk.stem.porter import PorterStemmer ps=PorterStemmer() from nltk.corpus import stopwords # 预处理逻辑 derlem = [] allwords=[] for i in range(yorumlar.shape[0]): yorum = re.sub("[^a-zA-Z]"," ", yorumlar["Body"] [i]) yorum=yorum.lower() yorum= yorum.split() yorum=[ps.stem(kelime) for kelime in yorum if not kelime in set(stopwords.words("english"))] for kelime in yorum: allwords.append(kelime) yorum= " ".join(yorum) derlem.append(yorum)
问题排查与解决
- 索引问题:拼接DataFrame时默认会保留各子DataFrame的原有索引,后续按位置索引遍历取值时容易出现匹配异常,添加
ignore_index="false"参数后索引显示恢复正常。 - 报错根源定位:类型错误的触发原因是拼接后的数据集
Body列存在nan空值,re.sub方法无法处理非字符串类型的空值,从而抛出类型错误。 - 最终解决方法:对
Body列执行fillna操作填充空值后,代码运行恢复正常。
内容的提问来源于stack exchange,提问作者Osman Yılmaz
相关产品推荐
相关产品推荐

