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

如何借助datetime对多列表排序以关联App评论CSV数据

解决CSV评论按日期排序且关联数据不错乱的问题

问题说明

需要将CSV文件中的App评论按日期排序,用于后续matplotlib绘制散点图。当前代码仅能实现日期排序,但无法保证所有关联数据(如评论内容、评分、未读取的后续列)顺序一致,存在数据错乱风险,且CSV包含未读取的后续列需要保留。

修正思路

  • 不拆分各字段到单独列表,保留完整行数据,排序时整行同步移动,彻底避免数据错乱
  • 直接对原始行数据(跳过表头)按日期字段排序,用datetime.strptime解析日期作为排序依据
  • 后续提取绘图字段时,再从排序后的完整数据中按需提取

修正后的代码

import datetime

def sort_app_reviews(app_data):
    # 跳过表头,获取所有数据行
    data_rows = app_data[1:]
    # 按日期排序,key为解析后的datetime对象,确保日期顺序正确
    sorted_rows = sorted(data_rows, key=lambda row: datetime.datetime.strptime(row[0], "%m/%d/%Y"))
    
    # 按需拆分到单独列表用于绘图
    date = [row[0] for row in sorted_rows]
    negative = [row[2] for row in sorted_rows]
    positive = [row[3] for row in sorted_rows]
    ratings = [row[4] for row in sorted_rows]
    # 未读取的后续列也可统一提取
    other_columns = [row[5:] for row in sorted_rows]
    
    return sorted_rows, date, negative, positive, ratings, other_columns

# 调用示例(假设app_data是读取后的CSV完整数据)
# sorted_data, dates, neg_reviews, pos_reviews, scores, others = sort_app_reviews(app_data)
# print(sorted_data)

代码解释

  1. 保留完整行:直接操作原始数据行,避免拆分后排序导致的字段对应错误
  2. 精准排序依据:lambda参数为整行数据,取第一列日期解析为datetime对象,确保日期排序逻辑准确
  3. 兼容未读取列:排序后的完整行包含所有列,后续可随时提取需要的字段,不会丢失数据
  4. 同日期处理:Python的sorted是稳定排序,日期相同时会保留原始数据的相对顺序,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:50:25