如何借助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)
代码解释
- 保留完整行:直接操作原始数据行,避免拆分后排序导致的字段对应错误
- 精准排序依据:lambda参数为整行数据,取第一列日期解析为datetime对象,确保日期排序逻辑准确
- 兼容未读取列:排序后的完整行包含所有列,后续可随时提取需要的字段,不会丢失数据
- 同日期处理:Python的
sorted是稳定排序,日期相同时会保留原始数据的相对顺序,符合需求
内容的提问来源于stack exchange,提问作者Reina297
相关产品推荐
相关产品推荐

