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

如何使用Python pandas构造指定多行合并格式的DataFrame

实现方案

你需要的这种合并展示效果有两种常用实现方式,按需选择即可:

方式1:Details列存储为换行分隔的字符串(单条记录对应一个Name)

这种方式实际存储时每个Name仅对应1行数据,仅在打印/渲染时把Details内容拆成多行显示,和你的示例效果完全一致:

import pandas as pd

# 构造原始数据,每个Name对应多条详情的列表
data = {
    "Name": ["Roan", "Marry", "Ruth"],
    "Details": [
        ["Male", "Student", "Single"],
        ["Female", "Married"],
        ["Male"]
    ]
}

df = pd.DataFrame(data)
# 将列表转为换行分隔的字符串
df["Details"] = df["Details"].str.join("\n")

# 配置pandas显示规则,允许单元格内换行
pd.set_option('display.max_colwidth', None)
pd.set_option('display.expand_frame_repr', False)

print(df)

如果是在Jupyter Notebook环境中,无需打印,直接用以下代码即可自动渲染出换行效果:

df.style.set_properties(**{'white-space': 'pre-wrap'})

方式2:基于长表构造,打印时隐藏重复Name值

如果你的原始数据是每个Details对应一行的长表结构,可以用这种方式处理后打印:

import pandas as pd

# 原始长表,每个Name对应多条Details记录
raw_data = [
    ["Roan", "Male"],
    ["Roan", "Student"],
    ["Roan", "Single"],
    ["Marry", "Female"],
    ["Marry", "Married"],
    ["Ruth", "Male"]
]
df_long = pd.DataFrame(raw_data, columns=["Name", "Details"])

# 把重复的Name值替换为空字符串,打印时就会呈现合并效果
df_print = df_long.copy()
df_print["Name"] = df_print["Name"].mask(df_print["Name"].duplicated(), "")

print(df_print)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:18:02