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

如何基于字符串和规则展开Python Pandas DataFrame

实现字符串模板按类型展开的方法

需求说明

将包含占位符的字符串模板(StringDataFrame),依据类型映射表(ThingsDataFrame)展开为每个模板对应所有同类型事物的字符串。

准备数据

先定义两个初始DataFrame:

import pandas as pd

# StringDataFrame
string_df = pd.DataFrame({
    "String": [
        "Jon likes {ExplodeAnimals}.",
        "Jon eats {ExplodeFruit}."
    ]
})

# ThingsDataFrame
things_df = pd.DataFrame({
    "Thing": ["Cats", "Dogs", "Tigers", "Llamas", "Apples", "Pears", "Bananas", "Strawberries"],
    "Type": ["animal", "animal", "animal", "animal", "fruit", "fruit", "fruit", "fruit"]
})

实现步骤

  1. 提取占位符与类型的映射
    从字符串模板中提取占位符,并转换为对应的类型(比如{ExplodeAnimals}对应animal):
# 提取占位符并映射到Type
string_df["Placeholder"] = string_df["String"].str.extract(r"\{(.*?)\}")[0]
string_df["Type"] = string_df["Placeholder"].str.replace("Explode", "").str.lower()
  1. 关联两个DataFrame并替换占位符
    通过Type字段关联两个表,用Thing替换模板中的占位符:
# 关联表
merged_df = string_df.merge(things_df, on="Type", how="left")
# 替换占位符生成最终字符串
merged_df["String"] = merged_df.apply(
    lambda row: row["String"].replace(f"{{{row['Placeholder']}}}", row["Thing"]),
    axis=1
)
  1. 整理结果
    保留需要的String列,得到目标格式:
result_df = merged_df[["String"]].reset_index(drop=True)

最终结果

运行后得到的result_df如下:

String
Jon likes Cats.
Jon likes Dogs.
Jon likes Tigers.
Jon likes Llamas.
Jon eats Apples.
Jon eats Pears.
Jon eats Bananas.
Jon eats Strawberries.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:45:20