已解决:Python Pandas dt.month与Excel月份计算结果存在差异
问题解决:修正Pandas日期解析格式导致的月份统计差异
在处理银行交易数据时,将Value Date和Transaction Date字段转换为datetime格式后,使用dt.month_name()生成的月份名称,与Excel统计的xl_month结果出现显著差异——核心原因是Pandas自动解析日期时混淆了日和月的顺序,导致日期被错误转换,进而影响月份统计结果。
解决步骤:指定明确的日期解析格式
在调用pd.to_datetime()时,通过format参数指定与Excel一致的日期格式(比如常见的DD/MM/YYYY或DD-MM-YYYY),确保日期转换逻辑和Excel对齐。
修改后的代码如下:
data = pd.read_excel("data.xlsx",sheet_name="Sheet1") data = data.drop(["S No."],axis=1) # 转换datetime时指定匹配Excel的日期格式 date_cols = ["Value Date","Transaction Date"] # 根据你的实际日期格式调整format参数,示例为DD/MM/YYYY格式 data[date_cols] = data[date_cols].apply(lambda col: pd.to_datetime(col, format="%d/%m/%Y")) val_date = "Value Date" tnx_date = "Transaction Date" data["py_Month"] = data[val_date].dt.month_name() # data["py_Month"] = data[tnx_date].dt.month_name() vc_df = data[['xl_month', 'py_Month']].apply(pd.Series.value_counts) vc_df
补充说明
- 如果不确定具体日期格式,也可以使用
dayfirst=True参数(优先将日期字符串的第一个数字视为日),但指定明确的format参数能避免歧义,转换更可靠。 - 验证转换是否正确:可以抽取部分日期数据,对比转换前后的数值,确认月份与Excel的
xl_month完全匹配。
内容的提问来源于stack exchange,提问作者Jayit Ghosh
相关产品推荐
相关产品推荐

