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

Python Pandas处理Excel表格:日期列上移匹配描述行问题

Pandas处理Excel:将日期行匹配到对应描述行

我是Python新手,用Pandas处理Excel表格时碰到个问题:
已经完成这些操作:去除日期行重复值,拆分出仅含日期的DataFrame和仅含描述的DataFrame,删除最后一行。
现在需要把A列的日期上移到对应描述行的B列,但存在某行(黄色标记行)下方无对应日期的情况,要实现目标效果。

解决方案

结合你的现有代码,我们可以通过日期填充+过滤的方式实现需求,具体代码如下:

import pandas as pd
from datetime import datetime

# 读取Excel数据(你的原有代码)
df_cdms_labour = pd.read_excel(test_cdms,
                               header=None,
                               names=['start_date', 'end_date', 'price','percent',
                                      'comment','rate',  'rate_comment','number_1','markup','markup_number'])

# 删除最后一行(你的原有代码)
df_cdms_labour.drop(df_cdms_labour.tail().index, inplace=True)

# 1. 标记哪些行是日期行
df_cdms_labour['is_date_row'] = df_cdms_labour['start_date'].apply(lambda x: isinstance(x, datetime))

# 2. 填充日期:将日期行的日期值向下传递给后续的描述行,直到下一个日期行出现
df_cdms_labour['target_date'] = df_cdms_labour['start_date'].where(df_cdms_labour['is_date_row']).ffill()

# 3. 过滤掉原本的日期行,只保留描述行,同时重置索引
df_final = df_cdms_labour[~df_cdms_labour['is_date_row']].reset_index(drop=True)

# 4. 将填充好的日期放到B列(对应你的end_date列)
df_final['end_date'] = df_final['target_date']

# 查看处理后的结果
print(df_final)

代码说明

  • is_date_row列:用来区分日期行和描述行,方便后续处理;
  • where+ffill():只保留日期行的start_date值,其他行设为NaN,再用ffill()(向前填充)把最近的日期值传递给下面的所有描述行,包括那行没有后续日期的黄色标记行;
  • 最后过滤掉日期行,得到的就是每个描述行都匹配好对应日期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:55:21