如何让按月份聚合后的DATE列保持datetime格式而非字符串格式?
解决方法
方法1:分组时直接使用时期类型(推荐)
跳过字符串转换步骤,直接用dt.to_period('M')按月份维度分组,这样分组后的索引是专门用于时间周期的Period类型,后续可轻松转为datetime格式(默认取每月最后一天,也可指定取第一天):
# 按月份聚合统计 df1 = df1.groupby(df1['DATE'].dt.to_period('M')).agg( GROSS_ACTIVATIONS=('GROSS_ACTIVATION', 'sum') ) # 将Period索引转为datetime(默认返回每月最后一天) df1.index = df1.index.to_timestamp() # 若需要每月第一天,可添加参数调整 # df1.index = df1.index.to_timestamp(freq='M', how='start')
方法2:将已生成的字符串索引转为datetime
如果已经完成字符串分组,直接用pd.to_datetime转换索引,注意指定与strftime一致的格式字符串,保证转换准确高效:
# 你原有的分组代码 df1 = df1.groupby(df1['DATE'].dt.strftime('%m-%Y')).agg( GROSS_ACTIVATIONS=('GROSS_ACTIVATION', 'sum') ) # 转换字符串索引为datetime格式 df1.index = pd.to_datetime(df1.index, format='%m-%Y')
说明:方法1更高效,避免了字符串与datetime的来回转换;方法2适合已完成字符串分组后的补救场景,指定
format参数能避免自动解析时的格式歧义。
内容的提问来源于stack exchange,提问作者fazeeh
相关产品推荐
相关产品推荐

