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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:39:00