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

如何将DataFrame中含'Narrative'的多行转置为单列

Pandas实现含'Narrative'内容转置合并为单列方案

适用场景说明

可处理两类需求:行内容包含'Narrative'关键词合并、列名包含'Narrative'关键词合并

场景1:行内容包含'Narrative',合并所有匹配行到单独列

实现代码

import pandas as pd

# 替换为你的实际DataFrame变量名
df = 你的原始DataFrame

# ========== 筛选行内容含'Narrative'的行 ==========
# 仅检索指定列(示例中内容列名为content,替换为你的实际列名)
match_rows = df[df['content'].str.contains('Narrative', na=False)]
# 若要检索整行所有字段包含'Narrative',替换为下面的代码
# match_rows = df[df.apply(lambda x: x.str.contains('Narrative', na=False).any(), axis=1)]

# ========== 合并到单列 ==========
# 方案A:所有匹配内容合并到同一个单元格,新增列全局统一值
df['merged_narrative'] = '\n'.join(match_rows['content'].astype(str).tolist())

# 方案B:按分组(比如按业务ID分组)合并对应匹配内容,每个分组单独聚合
df_grouped = df.groupby('业务ID列名').agg(
    # 其他需要保留的字段可按示例新增,取第一个出现的值
    字段1 = ('原字段1名', 'first'),
    字段2 = ('原字段2名', 'first'),
    # 合并当前分组下所有含'Narrative'的内容
    merged_narrative = ('content', lambda x: '\n'.join(x[x.str.contains('Narrative', na=False)].astype(str)))
).reset_index()

场景2:列名包含'Narrative',合并所有匹配列到单独列

如果是多个列名带'Narrative',需要把这些列的内容转置合并为1列:

# 筛选列名含'Narrative'的所有列
narrative_cols = [col for col in df.columns if 'Narrative' in col]

# 合并这些列的内容到新列,空值自动跳过
df['merged_narrative'] = df[narrative_cols].apply(
    lambda x: '\n'.join(x.dropna().astype(str)),
    axis=1
)

# 如果需要把这些列转置为多行(每个Narrative单独一行,保留其他字段)
df_melt = df.melt(
    id_vars=[col for col in df.columns if col not in narrative_cols], # 保留的非Narrative列
    value_vars=narrative_cols,
    var_name='narrative_type',
    value_name='merged_narrative'
).dropna(subset=['merged_narrative'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:24:02