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

Pandas 如何查询唯一ID最后出现的对应月度CSV文件名

解决步骤

首先修正你现有代码的一个潜在问题:你当前用files.sort()是按字符串字典序排序,你的文件同时包含2020年和2021年的记录,字典序会把01_2021.csv排在11_2020.csv前面,和实际时间顺序相反,会导致最终取到的lastSeen不是最晚出现的时间,建议先把排序逻辑修改为按文件对应的实际时间排序:

# 替换原有代码中的 files.sort() 部分
def get_file_time(file_path):
    # 从文件名提取年月转成数值用于排序,比如 11_2020.csv 转成 202011
    file_name = os.path.split(file_path)[-1]
    ym_str = file_name.replace('.csv', '')
    month, year = ym_str.split('_')
    return int(year) * 100 + int(month)

files.sort(key=get_file_time)

排序修正后你合并得到的df就是按时间从早到晚堆叠的,后续只需要做去重处理即可得到目标结果:

# 从fileName列提取年月作为lastSeen
df['lastSeen'] = df['fileName'].str.replace('.csv', '', regex=False)
# 按id去重,保留每个id最后一次出现的记录,仅保留需要的两列
result_df = df.drop_duplicates(subset='id', keep='last')[['id', 'lastSeen']]
# 按id升序排序后导出结果
result_df.sort_values('id', ignore_index=True).to_csv('finalFile.csv', index=False)

如果你已经确认之前的排序逻辑符合时间从早到晚的要求,不需要修正排序,直接执行后面的处理代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:03