pandas 属性错误:“DataFrame”对象没有DataFrame的属性“append”

qnakjoqk  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(2821)

我试图为我的垃圾邮件分类器创建一个DataFrame对象。它应该包含两列:'messages'和'class'。但是,当我使用dataframe.append函数将电子邮件作为'messages'添加到我的dataframe中,沿着将文件夹名称作为' class',我收到以下错误:
属性错误:“DataFrame”对象没有属性“append”
为此,我最初创建了一个Dataframe,如下所示data = DataFrame({'message': [], 'class': []})
我尝试使用DataFrame.append()函数将垃圾邮件和业余邮件添加到DataFrame中。下面是我使用的代码:

data = DataFrame({'message': [], 'class': []})

data = data.append(dataFrameFromDirectory('D:\email_classifier\spam', 'spam'))
data = data.append(dataFrameFromDirectory('D:\email_classifier\ham', 'ham'))

从理论上讲,这应该会将电子邮件和文件夹名称添加到数据中。有没有一种方法可以在不使用旧版本pandas的情况下解决这个问题?

dbf7pr2w

dbf7pr2w1#

pandas〉= 2.0:append已删除,请使用pd.concat

DataFrame.append在版本1.4中被弃用,并在版本2.0中从pandas API中完全删除
请参阅弃用文档以及最初提出弃用的this github issue
删除它的理由是不鼓励在循环中迭代增长DataFrames(这是人们通常使用append的目的)。这是因为append在每个阶段都创建一个新副本,导致内存中的二次复杂度。
在没有append的情况下,如果您的数据按行增长,正确的方法是将其累积到记录列表(或DataFrame列表)中,并在最后将其转换为一个大的DataFrame。

accumulator = []
for args in arg_list:
    accumulator.append(dataFrameFromDirectory(*args))

big_df = pd.concat(accumulator)

参考文献:

相关问题