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

如何为Pandas DataFrame添加拆分review生成的多行与两列?

解决方案

你需要把每条评论生成的多段子片段转换成多行数据,最直接的方式是先收集所有子片段记录,再转换成DataFrame。另外可以优化你的字符串拼接逻辑,用str.join()替代循环,效率更高。

方法一:列表收集记录后转DataFrame

import pandas as pd

# 初始化空列表存储所有子片段记录
result_rows = []

# 遍历每条评论
for idx, review in correct_X_test['review'].items():
    words = review.split()
    # 对每个单词位置生成对应子片段
    for i in range(len(words)):
        sub_review_1_i = ' '.join(words[:i+1])
        sub_review_i_n = ' '.join(words[i:])
        # 将记录加入列表,可选择保留原评论或其他字段
        result_rows.append({
            'original_review': review,  # 可选,保留原评论便于溯源
            'sub_review_1_i': sub_review_1_i,
            'sub_review_i_n': sub_review_i_n
        })

# 转换为最终DataFrame
expanded_df = pd.DataFrame(result_rows)

方法二:Pandas apply + explode 实现(更简洁)

这种方法避免显式循环,更贴合Pandas的向量化操作风格:

import pandas as pd

def generate_sub_reviews(review):
    words = review.split()
    sub_reviews = []
    for i in range(len(words)):
        sub_reviews.append({
            'sub_review_1_i': ' '.join(words[:i+1]),
            'sub_review_i_n': ' '.join(words[i:])
        })
    return sub_reviews

# 生成子片段列表并展开为多行
expanded_df = correct_X_test['review'].apply(generate_sub_reviews).explode().apply(pd.Series)
# 若需保留原DataFrame的其他列,可合并回去
expanded_df = pd.concat([correct_X_test.loc[expanded_df.index].reset_index(drop=True), expanded_df.reset_index(drop=True)], axis=1)

补充说明

  • 两种方法都会把单条评论拆分成n行(n为评论的单词数量),每行对应一个i位置的子片段组合。
  • str.join()比你原有的循环拼接效率高,还能避免末尾多余空格;如果需要和原代码一样保留末尾空格,可改为' '.join(...) + ' '。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:31:07