按用户+日期分组DataFrame并写入单CSV文件的实现问题
解决方案
- 核心思路:从
logtime中提取日期维度,按用户+日期分组,将同一天同一用户的所有会话日志合并后写入对应文件
具体实现步骤
转换时间格式并提取日期列
先把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分组处理并写入文件
按用户和日期分组,遍历每组数据完成排序和写入:# 按用户+日期分组 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
相关产品推荐
相关产品推荐

