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

Python处理支付日期csv时sort_values失效及星期计算错误问题

问题排查与解决方案

问题1:sort_values排序不生效、同日被拆分分组

  • 原因1:pandas的sort_values()方法默认不修改原对象,仅返回排序后的新DataFrame,你没有赋值回原变量,所以原df的顺序没有变化
  • 原因2:itertools.groupby()仅能对连续出现的相同值进行分组,原df中Day列的22是不连续分布的(中间夹了24、23),所以同一个日期被拆分为多个分组
  • 优化建议:统计频次直接用pandas原生的value_counts()方法,无需手动排序+分组,更简洁准确

问题2:星期计算字段返回当前日期星期

  • 原因:计算DayOfWeek的lambda表达式里,调用的是datetime.today().weekday(),每次取的都是代码运行当天的星期,完全没有用到每行的目标日期变量x
  • 修正方法:把表达式改为x.weekday()即可,直接取当前行NewDate对应的星期值

修正后的完整代码

import pandas as pd
from datetime import datetime

df = pd.read_csv(r"C:\Users\mattl\OneDrive\Desktop\example_netflix.csv")

# 转换为日期格式
df['NewDate']=df['date'].apply(lambda x: datetime.strptime(x, '%d/%m/%Y'))

# 提取月份存储为新列
df['Month']=df['NewDate'].dt.month

# 提取日存储为新列
df['Day']=df['NewDate'].dt.day

# 提取星期存储为新列,修正为取目标日期的星期
df['DayOfWeek']=df['NewDate'].dt.weekday

# 按日排序,赋值回原df生效
df = df.sort_values('Day', ignore_index=True)
print('CSV File rows')
print(df)

# 统计日出现次数
st = list(df['Day'].value_counts().items())

# 统计结果
print('Count Results')
print(st)

修正后运行的统计结果

Count Results
[(22, 8), (23, 1), (24, 1)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:57:04