如何用Pandas高效为DataFrame指定列非空单元格追加子串?
Pandas实现高效处理方案
完全可以用Pandas实现,比openpyxl循环高效得多,具体步骤如下:
预处理date列,提取目标前缀
先把date列按下划线分割取前半部分,没有下划线则保留原内容:df['date_prefix'] = df['date'].str.split('_', n=1).str[0]用
n=1限制只分割一次,避免date包含多个下划线时出错。批量处理color列
先筛选出所有以color开头的列,仅对非空单元格(排除NaN和空字符串)拼接date前缀:# 获取所有color开头的列 color_cols = [col for col in df.columns if col.startswith('color')] # 非空值追加前缀,空值/NaN保持原样 df[color_cols] = df[color_cols].apply( lambda col: col.where( col.isna() | (col == ''), col + '_' + df['date_prefix'] ), axis=0 ) # 可选:删除临时生成的date_prefix列 df.drop('date_prefix', axis=1, inplace=True)这个操作是向量化执行的,比逐单元格循环快几个数量级,大体积数据也能快速处理。
Stack Overflow无图片发布表格的方法
不用图片发表格有几种实用方式:
Markdown表格格式:手动编写或用工具生成,示例:
| date | color1 | color2 | color3 | |------------|--------|--------|--------| | 2023_05 | red | | green | | 2024 | | blue | NaN |你可以直接用Pandas的
df.to_markdown()方法生成该格式,复制粘贴即可。CSV代码块:把表格存为CSV格式,用代码块包裹:
date,color1,color2,color3 2023_05,red,,green 2024,,blue,NaN对齐式纯文本表格:用空格对齐列,放在代码块里:
date color1 color2 color3 2023_05 red green 2024 blue NaN
这些方式能让其他开发者清晰查看数据结构,比图片更友好。
内容的提问来源于stack exchange,提问作者Davide C.
相关产品推荐
相关产品推荐

