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

根据前一行按规则拆分DataFrame含and语句的行并新增行

嗨,这个需求其实不难实现,用Pandas就能轻松搞定!我给你一步步拆解并附上可直接套用的代码示例:

实现思路
  • 第一步:精准识别DataFrame中包含"and"的目标行
  • 第二步:对目标行拆分处理——原行保留"and"前的内容,复制行保留"and"后的内容,其余列完全复用
  • 第三步:将处理后的目标行与未包含"and"的原始行合并,得到最终结果
代码示例

首先我们先构造一个和你需求匹配的示例DataFrame:

import pandas as pd

# 模拟你的原始数据
data = {
    '目标列': ['1', '22 and 23', '3', '45 and 46'],
    '其他列1': ['描述A', '描述B', '描述C', '描述D'],
    '其他列2': ['类型X', '类型Y', '类型X', '类型Y']
}
df = pd.DataFrame(data)

接下来是核心处理逻辑:

# 定义行处理函数,针对单一行完成拆分或保留
def process_and_row(row):
    target_col = '目标列'  # 替换成你实际需要拆分的列名
    if 'and' in row[target_col]:
        # 拆分and前后内容,自动去除首尾空格
        part_before, part_after = [content.strip() for content in row[target_col].split('and')]
        # 生成原行(保留and前内容)
        original_row = row.copy()
        original_row[target_col] = part_before
        # 生成复制行(保留and后内容)
        copied_row = row.copy()
        copied_row[target_col] = part_after
        return [original_row, copied_row]
    else:
        # 不包含and的行直接返回
        return [row]

# 遍历所有行,执行处理逻辑
processed_data = []
for _, row in df.iterrows():
    processed_data.extend(process_and_row(row))

# 转换为最终的DataFrame
final_df = pd.DataFrame(processed_data)
效果展示

运行代码后,final_df的输出结果如下:

目标列其他列1其他列2
1描述A类型X
22描述B类型Y
23描述B类型Y
3描述C类型X
45描述D类型Y
46描述D类型Y
额外说明
  • 如果你需要拆分的列不是"目标列",只需要修改代码中target_col的取值即可
  • 代码里的strip()会自动处理"and"前后的空格,避免拆分后内容带多余空格的问题
  • 不管你的DataFrame有多少其他列,这个逻辑都能保证非目标列的内容完全保留,不用额外调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:23:32