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

按用户+日期分组DataFrame并写入单CSV文件的实现问题

解决方案
  • 核心思路:从logtime中提取日期维度,按用户+日期分组,将同一天同一用户的所有会话日志合并后写入对应文件

具体实现步骤

  1. 转换时间格式并提取日期列
    先把logtime转为datetime类型,再单独提取日期作为分组依据:

    import pandas as pd
    import os
    
    # 假设你的数据集存储在DataFrame df中
    df['logtime'] = pd.to_datetime(df['logtime'])
    df['date'] = df['logtime'].dt.date  # 提取日期,格式如2024-05-20
    
  2. 分组处理并写入文件
    按用户和日期分组,遍历每组数据完成排序和写入:

    # 按用户+日期分组
    grouped = df.groupby(['user', 'date'])
    
    for (user_id, log_date), group_data in grouped:
        # 创建用户专属文件夹,已存在则跳过创建
        user_folder = f"./user_{user_id}"
        os.makedirs(user_folder, exist_ok=True)
        
        # 按logtime排序,保证日志时间顺序
        sorted_logs = group_data.sort_values('logtime')[['logtime', 'lat', 'lon']]
        
        # 定义CSV文件名,用日期命名
        csv_file = f"{log_date}_session_logs.csv"
        csv_path = os.path.join(user_folder, csv_file)
        
        # 写入CSV,不保留索引列
        sorted_logs.to_csv(csv_path, index=False)
    

关键细节说明

  • 用dt.date提取日期,确保同一天的不同会话被归为一组
  • 分组后对每组日志按logtime排序,保证输出的日志是时间正序
  • os.makedirs的exist_ok=True参数避免因文件夹已存在抛出异常
  • 写入时只保留logtime、lat、lon三个目标字段,剔除无关列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:15:40