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

Pandas DataFrame空值填充:accession尾为字母时拼接上方有效编号

Pandas实现方案

实现逻辑

  • 先标记基准行:accession编号不以字母结尾的行作为基准行
  • 生成基准值列:仅基准行保留自身accession值,其余位置为空后向下填充,所有行都能拿到离自己最近的上方基准行的accession值
  • 对需要填充的空列,若当前行属于以字母结尾的行,就用「基准值 + 空格 + 当前行accession值」填充空单元格

代码实现

import pandas as pd
import re

# 读取你的源数据,替换为你实际的读取逻辑
df = pd.read_csv("你的数据文件路径.csv")

# 标记是否为以字母结尾需要填充的行
df['is_suffix_row'] = df['accession'].apply(lambda x: bool(re.search(r'[A-Za-z]$', str(x))))

# 向下填充最近的上方基准accession值
df['base_accession'] = df['accession'].where(~df['is_suffix_row']).ffill()

# 单列填充示例,假设需要填充的列名为target_col
df['target_col'] = df.apply(
    lambda row: f"{row['base_accession']} {row['accession']}" if pd.isna(row['target_col']) and row['is_suffix_row'] else row['target_col'],
    axis=1
)

# 多列批量填充示例,替换为你实际需要填充的列名
# fill_cols = ["列名1", "列名2", "列名3"]
# for col in fill_cols:
#     df[col] = df.apply(
#         lambda row: f"{row['base_accession']} {row['accession']}" if pd.isna(row[col]) and row['is_suffix_row'] else row[col],
#         axis=1
#     )

# 清理辅助列
df = df.drop(columns=["is_suffix_row", "base_accession"])

# 输出结果
df.to_csv("填充后的结果.csv", index=False)

注:正则r'[A-Za-z]$'用于匹配末尾为大小写字母的情况,如果你的数据中accession后缀仅为大写字母,可以修改为r'[A-Z]$'提升匹配精度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:09:02