【问题标题】:why pandas concat gives me untrue dataframe while its type and shape is correct为什么 pandas concat 在其类型和形状正确时给了我不真实的数据框
【发布时间】:2021-09-28 12:51:32
【问题描述】:

我想做一些语言处理。当我使用“yor1”或“yor2”的数据框时,我的代码可以正常工作。但不幸的是,当我将这些数据帧合并到 1 个数据帧(即“yorumlar”)中时,我的代码会出现此错误

TypeError: expected string or bytes-like object

此外,“yorumlar”的形状和类型是正确的 ü 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

#Preprocessing
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)

my variables

可能我犯了一些简单的错误,你能帮帮我吗?谢谢

EDİT 1:当我们连接 2 个数据时,它们会保持其原始索引值。我不知道。我添加“ignore_index="false"”和索引号noe true

EDİT:我发现我的代码由于“nan”值而停止工作。我使用了fillna操作。我希望它能解决所有问题。

【问题讨论】:

    标签: python pandas nlp


    【解决方案1】:

    不要使用 for 循环手动循环数据帧,而是使用更快的矢量化。

    stop = set(stopwords.words('english'))
    
    yorumlar["Body"] = yorumlar["Body"].replace({r"[^a-zA-Z]": " "}, regex=True)
    yorumlar["Body"] = yorumlar["Body"].str.lower()
    yorumlar["Body"] = yorumlar["Body"].apply(lambda x: ' '.join([word for word in x.split() if word not in (stop)]))
    

    【讨论】:

    • 感谢您的额外提示。我会考虑的。我是个小菜鸟。
    【解决方案2】:

    我解决了这个问题。谢谢你的帮助。我犯了两个错误

    1- 我需要在我的 concad 操作中使用 (ignore_index="false" ) 2-我需要照顾“nan”价值观。错误是由于错误造成的。

    【讨论】:

      猜你喜欢
      • 2022-07-06
      • 1970-01-01
      • 2018-02-19
      • 2019-12-21
      • 2015-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      相关资源
      最近更新 更多