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

如何用Pandas为文件添加最新版本标记及关联DataDate标记?

实现两个标记字段的方法

先构造示例数据方便测试(和你的DataFrame结构对齐):

import pandas as pd

data = {
    'FileName': ['report.pdf', 'report.pdf', 'data.csv', 'data.csv', 'data.csv'],
    'FileModDate': ['2024-01-01', '2024-02-15', '2024-03-01', '2024-04-20', '2024-03-10'],
    'DataDate': ['2024-01-01', '2024-02-15', '2024-03-01', '2024-04-20', '2024-03-10']
}
df = pd.DataFrame(data)
# 关键步骤:把FileModDate转成datetime类型(如果你的原始数据是字符串格式,必须做这一步)
df['FileModDate'] = pd.to_datetime(df['FileModDate'])

1. 生成LatestFile标记

按FileName分组,将每组内FileModDate最新的行标记为1,其余为0:

# 用transform获取每个分组的最新修改时间,和当前行时间比较后转成整数标记
df['LatestFile'] = (df['FileModDate'] == df.groupby('FileName')['FileModDate'].transform('max')).astype(int)

原理:transform('max')会给每一行返回其所在文件分组的最新修改时间,和原列对比得到布尔值,转成int后True变1,False变0。

2. 生成DataDateFlag标记

要求仅当LatestFile为1时标记为1,否则为0,直接基于已生成的LatestFile列处理即可:

# 方法一:直接复制(逻辑完全匹配,最简洁)
df['DataDateFlag'] = df['LatestFile']

# 方法二:显式条件控制(适合后续可能扩展规则的场景)
df['DataDateFlag'] = df['LatestFile'].where(df['LatestFile'] == 1, 0)

最终效果示例:

FileNameFileModDateDataDateLatestFileDataDateFlag
report.pdf2024-01-012024-01-0100
report.pdf2024-02-152024-02-1511
data.csv2024-03-012024-03-0100
data.csv2024-04-202024-04-2011
data.csv2024-03-102024-03-1000

注意:如果你的FileModDate是字符串格式,必须先转成datetime类型,否则字符串排序会导致最大值判断错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:40:14