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

合并Pandas DataFrame与Series时append和concat方法报错问题

解决DataFrame无append属性的AttributeError问题

问题背景

编写format_topics_sentences函数用于生成文档主导主题、贡献占比及关键词,调用时触发错误:AttributeError: 'DataFrame' object has no attribute 'append',尝试原append方法和错误的concat用法均未解决。

报错原因

Pandas 2.0及后续版本移除了DataFrame.append()方法,原代码中sent_topics_df.append(...)的写法已不再支持;同时你尝试的sent_topics_df.concat(...)是错误用法——concat是Pandas的顶层工具函数,不是DataFrame的实例方法。

修复方案

方案1:预存数据到列表(推荐,效率更高)

避免在循环中频繁修改DataFrame,先将所有行数据存入列表,最后一次性转换为DataFrame:

修改后的完整代码

import pandas as pd

def format_topics_sentences(corpus, texts, ldamodel=None):
    # 初始化存储每行数据的列表
    rows_list = []

    # 获取每个文档的主主题
    for i, row_list in enumerate(ldamodel[corpus]):
        row = row_list[0] if ldamodel.per_word_topics else row_list            
        row = sorted(row, key=lambda x: (x[1]), reverse=True)
        # 提取主导主题、贡献占比和关键词
        for j, (topic_num, prop_topic) in enumerate(row):
            if j == 0:  # 仅处理主导主题
                wp = ldamodel.show_topic(topic_num)
                topic_keywords = ", ".join([word for word, prop in wp])
                # 将当前行数据添加到列表
                rows_list.append({
                    'Dominant_Topic': int(topic_num),
                    'Perc_Contribution': round(prop_topic, 4),
                    'Topic_Keywords': topic_keywords
                })
            else:
                break
    
    # 从列表转换为DataFrame
    sent_topics_df = pd.DataFrame(rows_list)

    # 添加原始文本到结果
    contents = pd.Series(texts, name='Original_Text')
    sent_topics_df = pd.concat([sent_topics_df, contents], axis=1)
    return sent_topics_df

方案2:用pd.concat替代append(适合小数据量)

如果坚持在循环中逐行拼接,需将新生成的Series转为DataFrame,再用顶层pd.concat函数拼接:

# 替换原append行的代码
new_row = pd.Series([int(topic_num), round(prop_topic,4), topic_keywords], 
                    index=['Dominant_Topic', 'Perc_Contribution', 'Topic_Keywords'])
sent_topics_df = pd.concat([sent_topics_df, new_row.to_frame().T], ignore_index=True)

调用验证

使用原调用语句即可正常运行:

df_topic_sents_keywords_I1 = format_topics_sentences(ldamodel=lda_model_I1, corpus=corpus_I1, texts=data_ready_I1)

内容的提问来源于stack exchange,提问作者Rohan Vaidya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:53:11