根据前一行按规则拆分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_
相关产品推荐
相关产品推荐

